ios - Swift如何使用nil属性创建和测试对象?

标签 ios swift swift2

我试图让我了解可选对象,比如说我有以下 class :

class Contact {

    var displayName:String

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

}

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

        return Contact(displayName: displayName)
    }
}

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

因此,要初始化此类,我通常会这样做:
let contact = Contact(displayName: "Test Name")

但相反,我也希望能够做到这一点:
let contact = Contact()

要么
let contact = Contacts().create()

最佳答案

您可以将init参数设置为可选的String?,默认情况下
nil:

class Contact {
    var displayName: String?

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

let contact1 = Contact()
let contact2 = Contact(displayName: "John")
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")

关于ios - Swift如何使用nil属性创建和测试对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36903472/

相关文章:

ios - applicationWillResignActive == 崩溃

iOS - UITableViewCell 中文本周围的圆角矩形,如 Things 应用程序

ios - 在 ios swift 中为小节创建页脚

ios - 在 iOS 中捕获签名时出现性能问题

ios - iOS SceneKit 中的纹理接缝

ios - 无法使用 Facebook SDK 登录

swift - 无法将类型 'T?' 的值转换为预期的参数类型 '_?' - 通用类型和完成 block

swift - 学习 Swift 尝试了解如何使代码更简单

ios - 当应用于 WKWebView 内的视频 srcObject 时,有什么方法可以防止 getUserMedia "Live Broadcast"?

ios - 如何让 Playground 执行时间和我们在 iOS 应用程序中运行一样快