ABRecordCopyValue返回0?

我想要做的是得到所有的联系人,并依靠如果该联系人有SocialProfileProperty或没有,得到所有这些SocialProfileProperty的联系人后,我会做出简单的过滤,以了解它是否是Facebook,Twitter的..

在我发布这个问题之前,我整天都试图find这个问题的任何解决scheme?

但它是允许返回0?

ABAddressBookRef addressBook; CFErrorRef *erer = NULL; addressBook = ABAddressBookCreateWithOptions(NULL, erer); CFArrayRef _allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook); CFIndex _nPeople = ABAddressBookGetPersonCount(addressBook); NSMutableArray *socialArray = [[NSMutableArray alloc] init]; ABMultiValueRef socialProfiles; for (int i=0;i<_nPeople; i++) { ABRecordRef _person=CFArrayGetValueAtIndex( _allPeople,i); NSNumber *recordId = [NSNumber numberWithInteger:ABRecordGetRecordID(_person)]; NSLog(@"%@",recordId); socialProfiles = ABRecordCopyValue(_person, kABPersonSocialProfileProperty); if (ABMultiValueGetCount(socialProfiles)>0) { [socialArray addObject:(__bridge id)(socialProfiles)]; } } NSLog(@"%d",socialArray.count); 

它是允许返回0,直到用户maull与本地社交联系人,这样做

直到他试图删除Facebook帐户,例如在这种情况下,警报才会出现

并问如果你想联络或不联系? 其他明智的返回0值:)

因此,这种方法将永远不会工作,直到用户与本机联系人成立FaceBook联系人。