在我的UITableViewController中,我有一个CNContact
的可选属性。如果不是nil,我想用联系人的数据填充一些文本字段。
这是属性:
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
我无法解决为什么它适用于print语句,但不能解决以下问题。
答案 0 :(得分:3)
我认为firstNameTextField
被声明为隐式可选项,如下所示:
var firstNameTextField: UITextField!
您导致在viewDidLoad
之前调用此代码。
如果是,firstNameTextField
为零。只有在加载后才能设置从XIB / Storyboards加载的UIViews的值。在此之前,他们的网点是零。
顺便说一句(即使这不是造成问题的原因):
if contact != nil {
prefillFromContact(contact!)
}
更像这样的Swifty:
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)
}