我已经使用cncontacts获取了联系人,并且能够在控制台屏幕上显示它们,但不能在表格视图

时间:2016-04-29 12:40:31

标签: ios objective-c cncontact

如何在表格视图中显示联系人?

我通过CNContactStore iOS 9获取了联系人。

- (void) getContacts {
    CNContactStore *store = [[CNContactStore alloc] init];
    [store requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError * _Nullable error) {
        if (granted == YES) {
            //keys with fetching properties
            NSArray *keys = @[CNContactFamilyNameKey, CNContactGivenNameKey, CNContactPhoneNumbersKey,CNContactImageDataKey];
            NSString *containerId = store.defaultContainerIdentifier;
            NSPredicate *predicate = [CNContact predicateForContactsInContainerWithIdentifier:containerId];
            NSError *error;
            NSArray *cnContactsarray = [store unifiedContactsMatchingPredicate:predicate keysToFetch:keys error:&error];   
            if (error) {
                NSLog(@"error fetching contacts %@", error);
                        }
            else {
                    for (CNContact *contact in cnContactsarray) {
                    //store all the contacts as per your requirement
                    NSLog(@"Name       :     %@",contact.givenName);
                    NSLog(@"Id         :     %@",contact.identifier);//the contact id which you want
                        [_ContactsCN addObject:contact];
                                  }


            }
            NSLog(@"array %@",_ContactsCN);
        }
    }];
}

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

当CNContact的提取联系人完成时,您需要在主线程上重新加载数据

在主线程上运行

dispatch_async(dispatch_get_main_queue(), ^{// reload your table here 
});