在UITableViewController中,我有一个可选属性,它是CNContact
。如果不是零,我想用联系人的数据填充一些文本字段。
这里是酒店:
var contact: CNContact? = nil {
didSet {
if contact != nil {
prefillFromContact(contact!)
}
}
}
下面是设置文本字段的代码
func prefillFromContact(con: CNContact) {
print(con.givenName)
firstNameTextField.text = con.givenName
}
print语句可以工作,并返回联系人的姓名,但下面的行抛出一个错误。
Kate
fatal error: unexpectedly found nil while unwrapping an Optional value
我搞不懂为什么它在打印语句上起作用,但在下面这行不行。
最佳答案
我假设firstNameTextField
声明为隐式可选,如下所示:
var firstNameTextField: UITextField!
您将导致在
viewDidLoad
之前调用此代码。如果是,则
firstNameTextField
为零。只有在加载了从XIB/Storyboards加载的UIViews之后,才可以设置这些UIViews的值。在此之前,他们的销售渠道是零。作为旁白(尽管这不是引起你问题的原因):
if contact != nil {
prefillFromContact(contact!)
}
更迅速的是:
if let contact = contact {
// this is only true if contact != nil, and you have a contact variable
// that is of type CNContact, not CNContact?
prefillFromContact(contact)
}
关于ios - 意外发现nil,即使展开后也是如此,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38015375/