2017-03-14 8 views
2

ネイティブCNContactViewControllerを使用して連絡先を追加しています。連絡先の識別子が ':ABPerson'という接尾辞を返し、連絡先リストをクロスチェックすると同じ連絡先が別のIDで表示されます。連絡先IDがABPerson接尾辞付きで返されます

誰でも実際の連絡先IDを取得する方法を知っていますか?

作成するコード:

- (IBAction)didSelectedAddContact:(id)sender { 
CNMutableContact *contact = [CNMutableContact new]; 

CNContactViewController *contactController = [CNContactViewController viewControllerForNewContact:contact]; 

NSLog(@"contact id : %@", contact.identifier); 

contactController.allowsEditing = true; 
contactController.allowsActions = true; 

contactController.delegate = self; 
[self.navigationController pushViewController:contactController animated:YES];  
} 

委任コールバック:機能以下

- (void)contactViewController:(CNContactViewController *)viewController didCompleteWithContact:(nullable CNContact *)contact{ 
_contact = contact; 

    [viewController.navigationController popViewControllerAnimated:YES]; 
} 

はnilを返します。

- (CNContact*) getContactFromStoreForIdentifier:(NSString*) identifier 
{ 
    CNContact *updatedContact = nil; 

    id descriptor = [CNContactViewController descriptorForRequiredKeys]; 

CNContactStore *store = [CNContactStore new]; 

NSError *error; 

updatedContact = [store unifiedContactWithIdentifier:identifier 
             keysToFetch:@[descriptor] 
               error:&error]; 
// Found? 
if (updatedContact == nil) 
{ 
    if (error != nil) 
    { 

    } 
} 
return updatedContact; } 

@parameter:CNContactオブジェクトの識別子がdidCompleteWithContactから受け取っ:コールバックを委任する。

+0

あなたは 'CNContactViewController'を作成し、デリゲートメソッドを実装するコードを共有することができます。 –

+0

@JonRoseが私の質問を更新しました。 –

答えて

0

viewControllerにcontactStoreを設定する必要があります。このプロパティが設定されていないされていない場合

CNContactStore *store = [CNContactStore new]; 
contactController.contactStore = store; 

は、ユーザーの 連絡先に連絡先を追加するよりも無効になっています。

ソース:https://developer.apple.com/reference/contactsui/cncontactviewcontroller/1616912-contactstore

+0

ありがとう@ジョン、しかし、これもうまくいきませんでした、最終的に永続的な連絡先識別子でストアから新しく追加された連絡先を取得するために述部を使用する必要があります。 –

+0

@ R.S。私は同じ問題に直面しています。異なる識別子があった場合、ここでどのように管理することができますか?永続的連絡先識別子とは何を意味しますか? –

関連する問題