Swift基础篇——构造函数

前端之家收集整理的这篇文章主要介绍了Swift基础篇——构造函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

构造函数

import Foundation

/** Swift中要求在创建一个类时必须给这个类中所有的属性进行初始化 如果不能在创建对象时给这个类中所有的属性进行初始化,那么这些属性必须是可选的 如果已经在构造方法中对所有的属性进行了初始化,那么这些属性就可以不是可选类型 在给某一个类指定属性的数据类型时,如果该属性是对象类型,那么可以指定为可选类型 如果该属性不是对象类型而是基本数据类型,那么建议直接赋值为0 */
class Student: NSObject  {

    // 注意:如果属性是基本数据类型,并且是可选类型,系统不会自动分配存储空间
    var name: String?
    var score: Double = 0

    // 重写构造函数
    override init() {
        // 注意: 在构造方法中必须先初始化本类再初始化父类
        name = "那些年我们一起走过的青春"
        score = 100
    }

    // 自定义构造方法
    init(name: String,score: Double) {
        self.name = name
        .score = score

// 以下这一句代码,能不写就不写
// super.init()
    }

    // 使用KVC对象转模型
    init(dict: [String: AnyObject]) {
        // 注意:Swift中如果想在构造方法中使用KVC转换模型,必须先调用 super.init()
        // 调用 super.init()的目的主要是为了给对象分配存储空间
        super.init()
        setValuesForKeysWithDictionary(dict)
    }

    // Swift中打印对象会调用下面这个属性
    override var description: String{
// return "name = \(name),score = \(score)"
        let property = ["name","score"]
        let dict = dictionaryWithValuesForKeys(property)
        return "\(dict)"
    }
}

测试类

import UIKit

class ViewController: UIViewController {
    override func touchesBegan(touches: Set<UITouch>,withEvent event: UIEvent?) {
        // 注意: Swift开发中一般情况下不用导入头像文件,因为只要所有的文件都在一个命名空间中那么就可以直接使用
        // 默认情况下一个项目的命名空间就是项目名称,而在同一个项目下的所有文件都在同一个命名空间中
// let stu = Student(name: "Swift",score: 97)
// let stu = Student()

        // 如果自定义一个类,并且没有重写构造方法,那么系统会提供默认的构造方法
        自定义了构造方法,那么系统不会提供默认的构造方法
        let stu = Student(dict: ["name": "longshao",0)">"score":"998"])
        print(stu.name)
        print(stu.score)
        print(stu.description)
    }

}

猜你在找的Swift相关文章