美文网首页
swift最新语法总结(类的构造函数)

swift最新语法总结(类的构造函数)

作者: coder_xiang | 来源:发表于2019-03-25 16:50 被阅读0次

构造函数的介绍

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

构造函数的基本使用

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

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

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

初始化时给属性赋值

  • 很多时候,我们在创建一个对象时就会给属性赋值
  • 可以自定义构造函数
  • 注意:如果自定义了构造函数,会覆盖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方法字典转模型
        setValuesForKeys(dict)
    }
}

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

相关文章

  • Swift最新语法总结

    swift最新语法总结(函数) swift最新语法总结(枚举类型与结构体) swift最新语法总结(类的使用) s...

  • swift最新语法总结(类的构造函数)

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

  • 2018-01-23

    谈swift init构造函数一些心得 1、swift类Class的构造函数目的:为了给类的stored(存储)属...

  • Swift基础语法-类的构造函数

    本节知识点 构造函数的介绍 构造函数的基本使用 自定义构造函数 属性与构造函数 1. 构造函数的介绍 构造函数类似...

  • java面向对象之构造方法

    构造函数(构造方法、构造器、Constructor) 关于java类的构造函数 1、构造方法语法【修饰符列表】构造...

  • 面向对象(六)-派生类的构造函数

    派生类的构造函数 语法 如果不显式声明调用父类的无参构造函数(base()),那么默认会调用父类的无参构造函数。 ...

  • 构造函数与类(class)

    类其实就是构造函数的语法糖 , 构造函数 构造函数有一个prototype属性指向自身的原型对象, 构造函数的实例...

  • JAVA 核心笔记 || [6] 构造函数

    构造函数 语法 类的构造函数调用时机: 用new 关键字创建对象时调用 类的构造函数必须与它所在的类名具有相同的名...

  • swift最新语法总结(函数)

    函数 函数的介绍 函数相当于OC中的方法 函数的格式如下 func是关键字,多个参数列表之间可以用逗号(,)分隔,...

  • classes

    定义类 类语法有两个组成部分:[类表达式] 和 [类声明]。 构造函数 ES 6 里构造函数写法: * [con...

网友评论

      本文标题:swift最新语法总结(类的构造函数)

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