美文网首页
读书笔记第一周(10.3)

读书笔记第一周(10.3)

作者: DevKyle | 来源:发表于2015-10-03 23:04 被阅读40次

    每周的文档阅读

    Swift 2.0之初识面向协议编程

    Swift 2.0 支持协议扩展((protocol extensions):协议扩展可以使某些特定的情况下,简化协议。

    因为一个类型可以遵守多个协议,所以它可以从各个协议中接收到不同的默认实现。与其它语言中所支持的多重继承不同(说的就是C++吧),协议扩展不会为遵守它的类型增加额外的状态。

    所有的类,结构体和枚举都可以遵守协议,而基类只能被类所继承。

    协议拥有为值类型增加默认实现的能力,而不仅仅是类

    很好的用处1:
    定义一个协议遵从BooleanType类型

    protocol Bird: BooleanType 
    

    使用协议扩展能让我们有更简便的方法。

    extension BooleanType where Self: Bird {
         var boolValue: Bool {
              return self.canFly
          }
    }
    

    这个扩展可以让 canFly 属性来表示每个 Bird 类型的布尔值。就直接可以拿类型来当bool值来判断true ,false

    文章

    Swift2.0 支持泛型

    try?

    try?总是给已经在求值的结果类型又增添一层Optional。如果一个方法正常返回的类型是Int?,那么使用try?调用这个方法就会返回Int??或者Optional<Optional<Int>>文章

    用模式匹配解析 URL

    Generator 基本和 C++ 中的迭代方法一样。它是一个对象,next() 方法会返回被迭代序列中的下一个值,当迭代到结尾时返回 nil。
    每个 SequenceType(特别是array)都有一个生成器,我们只需要对每个值调用 next() 方法就可以建立元组。如果这个数组比较短,它将用 nil 填充最后几个值:

    本周遇到的问题和解决

    Array的困惑

    Array struct类型的泛型,是值类型的,OC中NSMutableArray是引用类型的,而且可以存放不同的类型的变量,即默认存放的是AnyObject,当然Array也可以存放任意类型如

    var array = Array<AnyObject>()
    array.append(12)
    array.append(13)
    array.append("nihao")
    for a in array  where a is String {
    //output nihao
        print(a)
    }
    
    Enum的困惑

    Enum类型的每个枚举值都可以关联一个值,并通过switch 语句提取出来,但是不能修改这个值例如:

    enum ServerResponse{
            case Result(String, String)
            case Error(String)
     }
    
    let success = ServerResponse.Result("6:00 am", "8:09 pm")
    let failure = ServerResponse.Error("Out of cheese.")
    
     switch success {
        case let .Result(sunrise,sunset):
        let serverResponse = "Sunrise is at \(sunrise) and sunset is at \(sunset)."
      case let .Error(error):
      let serverResponse = "Failure...  \(error)"
    }
    

    形如:

       if let str = String? {
            if let url = NSURL(str){
               ....
            }
       }
    

    可以改写成:

       if let str = String?,let url = NSURL(str){
               ....
       }
    

    这是一个递进的拆包语句 ,也就是说第一个let 失败接下去的将不执行

    本周项目的进展和解决

    登入界面的逻辑
    1. viewDidLoad()NSUserDefaults.standardUserDefaults()读取数据库中的保存的用户配置
    2. checkForLog()检测文本框是否已经输入完毕
    3. verifyLogInform验证登入信息

    不足:添加网络制式的判断,将头像文件等读取到当前用户

    设置界面逻辑
    1. 实现退出操作

    相关文章

      网友评论

          本文标题:读书笔记第一周(10.3)

          本文链接:https://www.haomeiwen.com/subject/xeegcttx.html