2017-03-01 5 views
0

私は、既存の連絡先の値をコピーする新しい連絡先を追加しようとしています。contactViewController didComplete with contact is not

if let mutableContact = self.editingCard?.contact.mutableCopy() as? CNMutableContact { 
    let editCardViewController = CNContactViewController(for: mutableContact) 
    editCardViewController.contactStore = CNContactStore() 
    editCardViewController.title = "Edit Card" 
    editCardViewController.delegate = self 
    self.present(UINavigationController(rootViewController: editCardViewController), animated: true, completion: nil) 
} 

表示されたContact View Controllerは問題ありません。連絡先から事前に入力された詳細が表示されます。ただし、[完了]をクリックすると、nil連絡先参照でコールバックが呼び出されます。すなわち

func contactViewController(_ viewController: CNContactViewController, didCompleteWith contact: CNContact?) { 
    print("Completed adding card \(contact)") 
} 

私が間違っていることは何ですか?

答えて

0

これは、CNMutableContactオブジェクトのフォーマットされていない情報が原因で発生しているようです。私の場合、日付(誕生日、記念日、その他の日付)には、日付オブジェクトに分、秒が設定されていました。 https://developer.apple.com/reference/contacts/cnmutablecontact/1403311-datesによると、そのユースケースは無効です。

この問題が発生する可能性がある人は、設定しているすべての情報をデバッグすることで、CNMutableContactの参考文献に書式が正しくない情報を理解することができます。