0

尝试使用以下接口获取具有联系人的 vCard 表示的 NSData 对象。

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

将一个 CNContact 传递给上述接口时得到一个 NSData 对象。这是工作代码

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

将 CNContacts 的 NSArray 传递给上述接口时,无法获取 NSData 对象。这是代码

CNContactStore* contactStore = [[CNContactStore alloc]init];
NSArray * keysToFetch =@[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 消息:将联系人写入 vCard(数据)时出现异常:获取联系人时未请求属性。

4

1 回答 1

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);
于 2016-04-16T11:54:58.473 回答