ABRecordCopyValue返回0?

时间:2013-01-30 13:44:34

标签: iphone ios objective-c ios6 abaddressbook

我尝试做的是,如果联系人 SocialProfileProperty ,那么获取所有联系人并依赖,在获得所有具有 SocialProfileProperty 的联系人后,我将进行简单的过滤要知道它是 Facebook,Twitter,..

在我发布这个问题之前,我整整一天试图找到解决这个问题的方法吗?

但是允许返回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);

1 个答案:

答案 0 :(得分:0)

允许返回0,直到用户使用native填充社交联系人,这样做

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

并询问你是否想要联系或不联系???其他明智的回报0值:)

因此,在用户使用本机联系人填充FaceBook联系人之前,此方法永远不会有效。