Ios 意外地发现零,即使在展开后也是如此

Ios 意外地发现零,即使在展开后也是如此,ios,swift,cocoa-touch,Ios,Swift,Cocoa Touch,在我的UITableViewController中,我有一个可选属性,它是CNContact。如果不是nil,我想用联系人的数据填充一些文本字段 这里是酒店: var contact: CNContact? = nil { didSet { if contact != nil { prefillFromContact(contact!) } } } 下面是设置文本字段的代码 func prefillFromContact(

在我的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语句上有效,但在下一行不行。

我假设
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
中,效果非常好。谢谢你的旁白!