目前,我正在使用这个代码片段从iPhone获取联系人。
CNContactStore *store = [[CNContactStore alloc] init];
[store requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError * _Nullable error) {
if (granted == YES) {
//keys with fetching properties
NSArray *keys = @[CNContactGivenNameKey,CNContactFamilyNameKey, CNContactPhoneNumbersKey, CNContactImageDataKey];
[[CNContactsUserDefaults sharedDefaults] sortOrder];
NSString *containerId = store.defaultContainerIdentifier;
//NSComparator hg= [CNContact comparatorForNameSortOrder:CNContactSortOrderGivenName];
NSPredicate *predicate = [CNContact predicateForContactsInContainerWithIdentifier:containerId];
NSError *error;
NSArray *cnContacts = [store unifiedContactsMatchingPredicate:predicate keysToFetch:keys error:&error];
NSSortDescriptor *sortDescriptor;
sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"givenName"
ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSArray *sortedArray = [cnContacts sortedArrayUsingDescriptors:sortDescriptors];
}];但在这里,我只得到iCloud的联系人。
我怎样才能从Facebook,gmail或任何其他云获得联系?请帮助解决这个问题。
发布于 2017-07-13 05:18:29
我在这个问题上花了两天时间,但没有得到任何解决办法。
那就用一个补丁就行了。这是对我有用的。
if ([container.name isEqualToString:@"Card"]) {
NSLog(@"iCloud");
}else if ([container.name isEqualToString:@"Address Book"]){
NSLog(@"google");
}else if ([container.name isEqualToString:@"Contacts"]){
NSLog(@"Yahoo");
}else{
NSLog(@"Other");
}发布于 2016-08-10 09:53:08
您必须为联系人获取所有容器,并从单个容器中获取联系人并合并它们。
// Get all containers of contacts like icloud contacts , gmail contacts and show all data
NSArray *allContainers = [store containersMatchingPredicate:nil error:nil];
for (CNContainer *container in allContainers) {
// create predicate using cncontactstore identifier
NSPredicate *predicate = [CNContact predicateForContactsInContainerWithIdentifier:container.identifier];
// get array of contact using predicate
NSArray *arrContacts = [[[CNContactStore alloc] init] unifiedContactsMatchingPredicate:predicate keysToFetch:keysToFetch error:nil];
}https://stackoverflow.com/questions/35333022
复制相似问题