13-Swift中类的构造函数

作者: Mg明明就是你 | 来源:发表于2016-04-18 12:44 被阅读0次

构造函数的介绍

  • 构造函数类似于OC中的初始化方法:init方法
  • 默认情况下载创建一个类时,必然会调用一个构造函数
  • 即便是没有编写任何构造函数,编译器也会提供一个默认的构造函数。
  • 如果是继承自NSObject,可以对父类的构造函数进行重写

构造函数的基本使用

  • 构造函数的基本使用
  • 类的属性必须有值
  • 如果不是在定义时初始化值,可以在构造函数中赋值
class Person: NSObject {
    var name : String
    var age : Int

    // 重写了NSObject(父类)的构造方法
    override init() {
        name = ""
        age = 0
    }
}

// 创建一个Person对象
let p = Person()```

- 初始化时给属性赋值
 > - 很多时候,我们在创建一个对象时就会给属性赋值
  - 可以自定义构造函数
  - 注意(warming):  如果自定义了构造函数,会覆盖init()方法.即不在有默认的构造函数

class Person: NSObject {
var name : String
var age : Int

// 自定义构造函数,会覆盖init()函数
init(name : String, age : Int) {
    self.name = name
    self.age = age
}

}

// 创建一个Person对象
let p = Person(name: "why", age: 18)```

  • 字典转模型(初始化时传入字典)
  • 真实创建对象时,更多的是将字典转成模型
  • 注意:
    • 去字典中取出的是NSObject,任意类型.
    • 可以通过as!转成需要的类型,再赋值(不可以直接赋值)
class Person: NSObject {
    var name : String
    var age : Int

    // 自定义构造函数,会覆盖init()函数
    init(dict : [String : NSObject]) {
        name = dict["name"] as! String
        age = dict["age"] as! Int
    }
}

// 创建一个Person对象
let dict = ["name" : "why", "age" : 18]
let p = Person(dict: dict)```

- 字典转模型(利用KVC转化)
   > - 利用KVC字典转模型会更加方便
    - 注意:
      - KVC并不能保证会给所有的属性赋值
      - 因此属性需要有默认值
        - 基本数据类型默认值设置为0
        - 对象或者结构体类型定义为可选类型即可(可选类型没有赋值前为nil)

class Person: NSObject {
// 结构体或者类的类型,必须是可选类型.因为不能保证一定会赋值
var name : String?

// 基本数据类型不能是可选类型,否则KVC无法转化
var age : Int = 0

// 自定义构造函数,会覆盖init()函数
init(dict : [String : NSObject]) {
    // 必须先初始化对象
    super.init()

    // 调用对象的KVC方法字典转模型
    setValuesForKeysWithDictionary(dict)
}

}

// 实现这个方法,当不是转化出所有属性
override func setValue(value: AnyObject?, forUndefinedKey key: String) {

}

// 创建一个Person对象
let dict = ["name" : "why", "age" : 18]
let p = Person(dict: dict)```

相关文章

  • 13-Swift中类的构造函数

    构造函数的介绍 构造函数类似于OC中的初始化方法:init方法 默认情况下载创建一个类时,必然会调用一个构造函数 ...

  • 构造函数

    构造函数 构造函数的数组的应用 类中包含类,并且给类传参 析构函数(逆构造函数):每个构造函数都析构函数,谁最先构...

  • 类和继承

    类 Kotlin 中使用 关键字 Class 声明类 构造函数 Kotlin 中类可以有主构造函数 和 次构造函数...

  • Android kotlin 类

    类 类的定义 1 当Kotlin中的类需要构造函数时,可以有一个主构造函数和多个次构造函数,可以没有次构造函数。主...

  • Kotlin学习笔记-class

    一、类的构造函数 在Kotlin中,允许有一个主构造函数和多个二级构造函数(辅助构造函数)。其中主构造函数是类头的...

  • 类和对象进阶

    一、构造函数 构造函数的作用 构造函数是类中的特殊成员函数,它属于类的一部分。给出类定义时,由程序员编写构造函数。...

  • Kotlin学习笔记(二)

    1. 构造函数 在 Kotlin 中的⼀个类可以有⼀个主构造函数和⼀个或多个次构造函数。主构造函数是类头的⼀部分:...

  • 继承中执行顺序讨论

    继承中,子父类的构造函数(构造函数不被继承)1.子类必须调用父类的构造函数(构造函数不被继承)(1)如果没有写调用...

  • C++基础构造函数(constructor)

    构造函数定义 C++中的类可以定义与类名相同的特殊成员函数,这种与类名相同的成员函数叫做构造函数,构造函数在定义时...

  • 静态类是不能实例化的

    静态类 原则 静态类中的所有成员必须是静态的。 静态构造函数 静态类可以有静态构造函数,静态构造函数不可继承。 静...

网友评论

    本文标题:13-Swift中类的构造函数

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