2016-06-24 9 views
0

私のUITableViewControllerには、CNContactというオプションのプロパティがあります。 nilでない場合は、連絡先のデータをテキストフィールドに入力します。ここで アンラッピングした後でも予期せず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

あなたは 'firstNameTextField'への参照を作成しました:

if contact != nil { prefillFromContact(contact!) } 

は、このようなより多くのSwiftyがある:さておき(これはあなたの問題を引き起こしているものではないにもかかわらず)として

あなたのxib/storyboardのIBOutlet? –

答えて

3

私はfirstNameTextFieldは、このような、暗黙のオプションとして宣言されていると仮定します。

var firstNameTextField: UITextField! 

そして、あなたは、このコードはviewDidLoad前に呼び出される原因となっています。

もしそうなら、firstNameTextFieldはゼロです。 XIB/StoryboardからロードされたUIViewの値は、ロードされた後にのみ設定できます。その前に、彼らの店は無しです。

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) 
} 
+1

もちろん、ああ。うん、私はこのVCの前に 'prepareForSegue'の' contact'プロパティを設定しています。私は 'prefillFromContact'を' viewDidLoad'に移動しました。余りにもありがとう! – Leon

関連する問題