Ios 意外地发现零,即使在展开后也是如此
在我的UITableViewController中,我有一个可选属性,它是Ios 意外地发现零,即使在展开后也是如此,ios,swift,cocoa-touch,Ios,Swift,Cocoa Touch,在我的UITableViewController中,我有一个可选属性,它是CNContact。如果不是nil,我想用联系人的数据填充一些文本字段 这里是酒店: var contact: CNContact? = nil { didSet { if contact != nil { prefillFromContact(contact!) } } } 下面是设置文本字段的代码 func prefillFromContact(
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语句上有效,但在下一行不行。我假设
firstNameTextField
被声明为隐式可选字段,如下所示:
var firstNameTextField: UITextField!
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)
}
您正在导致在viewDidLoad
之前调用此代码
如果是这样,firstNameTextField
为零。从XIB/故事板加载的UIView的值只有在加载后才能设置。在此之前,他们的门店是零
顺便说一句(尽管这并不是问题的根源):
更快捷的方式如下:
var firstNameTextField: UITextField!
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)
}
我假设
firstNameTextField
声明为隐式可选,如下所示:
var firstNameTextField: UITextField!
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)
}
您正在导致在viewDidLoad
之前调用此代码
如果是这样,firstNameTextField
为零。从XIB/故事板加载的UIView的值只有在加载后才能设置。在此之前,他们的门店是零
顺便说一句(尽管这并不是问题的根源):
更快捷的方式如下:
var firstNameTextField: UITextField!
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)
}
您是否在xib/故事板中创建了对
firstNameTextField
IBOutlet的引用?您是否在xib/故事板中创建了对firstNameTextField
IBOutlet的引用?当然。是的,我正在将contact
属性设置在这个VC之前的prepareforsgue
中。我将prefillFromContact
移动到viewDidLoad
中,效果非常好。谢谢你的旁白!啊当然。是的,我正在将contact
属性设置在这个VC之前的prepareforsgue
中。我将prefillFromContact
移动到viewDidLoad
中,效果非常好。谢谢你的旁白!