2016-04-16 11 views
0

連絡先のvCard表現を使用してNSDataオブジェクトを取得しようとしています。指定したCNContactsのvCard表現を返すことができません

+ (NSData *)dataWithContacts:(NSArray *)contacts 
        error:(NSError * _Nullable *)error 

1つのCNContactを上記のインターフェイスに渡すと、NSDataオブジェクトが取得されます。ここでは作業コードそれ以上のインターフェイスにCNContactsのNSArrayのを渡されたときにNSDataオブジェクトを取得できません

CNMutableContact * contact = [CNMutableContact new]; 
contact.middleName = @"Stalin"; 
contact.contactType = CNContactTypePerson; 
contact.givenName = @"Gates"; 
contact.familyName = @"GemmyApps"; 
NSData *bufferedData = [CNContactVCardSerialization dataWithContacts:contact error:nil]; 

です。 vCardのに 例外書き込みの連絡先(データ):接点がフェッチされたときに、プロパティが要求されなかった。ここのコード

CNContactStore* contactStore = [[CNContactStore alloc]init]; 
NSArray * keysToFetch [email protected][CNContactEmailAddressesKey, CNContactPhoneNumbersKey, CNContactFamilyNameKey, CNContactGivenNameKey, CNContactPostalAddressesKey]; 
NSMutableArray *arrFetchedcontact = [contactStore unifiedContactsMatchingPredicate:[CNContact predicateForContactsInContainerWithIdentifier: @[contactStore.defaultContainerIdentifier][0]] keysToFetch:keysToFetch error:nil]; 
NSData *bufferedData = [CNContactVCardSerialization dataWithContacts:arrFetchedcontact error:nil]; 

lldbメッセージです。

答えて

0

あなたは配列を渡すことで、データを取得することができますこの方法、

CNMutableContact * contact = [CNMutableContact new]; 
contact.middleName = @"Stalin"; 
contact.contactType = CNContactTypePerson; 
contact.givenName = @"Gates"; 
contact.familyName = @"GemmyApps"; 

CNMutableContact *contact2 = [CNMutableContact new]; 
contact.middleName = @"Stalin1"; 
contact.contactType = CNContactTypePerson; 
contact.givenName = @"Gates1"; 
contact.familyName = @"GemmyApps1"; 

NSArray *contactArr = [NSArray arrayWithObjects:contact,contact2,nil]; 

NSData *bufferedData = [CNContactVCardSerialization dataWithContacts:contactArr error:nil]; 



NSLog(@"data length %d",bufferedData.length); 
NSLog(@"contact is %@",contact); 
関連する問題