Swift 如何创建和测试具有 nil 属性的对象?

Osc*_*nco 1 ios swift swift2

我正在尝试解决可选项,假设我有以下课程:

class Contact {

    var displayName:String

    init(displayName:String) {
        self.displayName = displayName
    }

}

class Contacts {
    func create(displayName:String) -> Contact {

        return Contact(displayName: displayName)
    }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,Contact 类有一个字段 displayName,但该值在初始化时可以为零。

所以要初始化这个类,我通常会这样做:

let contact = Contact(displayName: "Test Name")
Run Code Online (Sandbox Code Playgroud)

但相反,我也希望能够做到这一点:

let contact = Contact()
Run Code Online (Sandbox Code Playgroud)

或者

let contact = Contacts().create()
Run Code Online (Sandbox Code Playgroud)

Mar*_*n R 5

您可以将 init 参数设为可选参数String?,并使用默认值 nil

class Contact {
    var displayName: String?

    init(displayName: String? = nil) {
        self.displayName = displayName
    }
}

let contact1 = Contact()
let contact2 = Contact(displayName: "John")
Run Code Online (Sandbox Code Playgroud)

同样适用于Contacts该类:

class Contacts {
    func create(displayName: String? = nil) -> Contact {
        return Contact(displayName: displayName)
    }
}

let contacts = Contacts()
let contact3 = contacts.create()
let contact4 = contacts.create("Mary")
Run Code Online (Sandbox Code Playgroud)