设为首页 加入收藏

TOP

swift 2.2 语法 (中)(四)
2017-10-13 10:33:07 】 浏览:5390
Tags:swift 2.2 语法
们自定义了构造函数,就会覆盖init:方法,也就是说不会有默认构造函数


class person: NSObject {

    var name : String

    //  自定义构造函数,覆盖init:函数
    init(name : String) {
        //  在初始化self.name属性时没有给它赋值,所以可以在构造函数里面进行赋值
        self.name = name
    }

}

//  创建person对象
let ps : person = person(name: "laoWang")

print(ps.name)  //  结果:laoWang
  • 字典转模型方式一
    • 开发中,我们经常会将字典转换成模型在来使用,这边就以此做例子
    • 需要注意的是:字典中取出的数据类型为NSObject,我们可以通过as!将其转成需要的类型


    class person: NSObject {
    
        var name : String
    
        //  自定义构造函数,覆盖init:函数
        init(dict : [String : NSObject]) {
    
            self.name = dict["name"] as! String
        }
    
    }
    
    //  创建person对象
    let ps : person = person(dict:["name" : "laoWang"])
    
    print(ps.name)  //  结果:laoWang
    
  • 字典转模型方式二
    • 开发中我们经常会用KVC的方式将字典转成模型,这边就使用KVC对字典进行转换
    • 需要注意的是:KVC不能保证给所有属性赋值,所以属性需要有默认的值
      • 对象、结构体类型定义一般为可选类型就可以了,因为可选类型没有赋值前为nil
      • 基本数据类型一般设置为0


      class person: NSObject {
          //  KVC方式下,对象、结构体类型必须是可选类型,否则无法转换
          var name : String?
      
          //  自定义构造函数,覆盖init:函数
          init(dict : [String : NSObject]) {
      
              //  必须先初始化对象
              super.init()
      
              //  调用对象的KVC方法
              setValuesForKeysWithDictionary(dict)
           }
      
      }
      
      //  创建person对象
      let ps : person = person(dict:["name" : "laoWang"])
      
      print(ps.name)  //  结果:laoWang
      
  • 首页 上一页 1 2 3 4 下一页 尾页 4/4/4
    】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
    上一篇深入剖析通知中心和KVO 下一篇iOS面试题总结 (三)

    最新文章

    热门文章

    Hot 文章

    Python

    C 语言

    C++基础

    大数据基础

    linux编程基础

    C/C++面试题目