iOS无法获取人物形象

我有两个tableViewControllers。 第一个有一个联系人列表。 另一个显示详细的人的信息。

第一个tableViewController的代码块

ABAddressBookRef addressBook = ABAddressBookCreate(); ABRecordRef source = ABAddressBookCopyDefaultSource(addressBook); NSArray *allPeople = (__bridge_transfer NSArray*)ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering(addressBook, source,kABPersonSortByFirstName); for ( int i = 0; i < [allPeople count]; i++ ) { ... contactClass = [[ContactClass alloc] initWithName:name surName:surName manID:[allPeople objectAtIndex:i]]; ... } 

第二个tableViewController的代码块

 ABRecordRef person = (__bridge ABRecordRef)contactClass.manID; BOOL isHasImage = ABPersonHasImageData(person); 

variablesisHasImage始终为false,即使联系人具有化身。 我甚至检查了第一个tableViewController,如果人有一个头像,那么它返回true和image。

有谁知道我为什么无法获取联系人图片?

ps contactClass.manIDidtypes。 它有一个正确的地址,因为ABMultiValueRef multiValue = ABRecordCopyValue((__bridge ABRecordRef)contactClass.manID, kABPersonPhoneProperty); 在第二个tableViewController中返回正确的值

对于你来说,我可能为时太晚,但也许这会帮助那些陷入同样问题的人。 看起来像ABPersonHasImageData()ABPersonCopyImageDataWithFormat()ABRecordRef拷贝(例如,使用ABAddressBookCopyArrayOfAllPeople()获得的数组中的ABContactRef ABPersonCopyImageDataWithFormat()不能像预期的那样在iOS 5.x上运行。 你可以像这样解决这个问题:

 - (UIImage*)imageForContact: (ABRecordRef)contactRef { UIImage *img = nil; // can't get image from a ABRecordRef copy ABRecordID contactID = ABRecordGetRecordID(contactRef); ABAddressBookRef addressBook = ABAddressBookCreate(); ABRecordRef origContactRef = ABAddressBookGetPersonWithRecordID(addressBook, contactID); if (ABPersonHasImageData(origContactRef)) { NSData *imgData = (NSData*)ABPersonCopyImageDataWithFormat(origContactRef, kABPersonImageFormatOriginalSize); img = [UIImage imageWithData: imgData]; [imgData release]; } CFRelease(addressBook); return img; } 

有没有进一步的更新?

我收到了一些用户无法看到几个联系人的缩略图的投诉。 大多数情况下,它工作正常,是否有任何特殊的情况下,不会返回缩略图。

我正在使用下面的一段代码:

  - (instancetype)initWithABContact:(ABRecordRef)contact { NSData *iThumbnailData = nil; if (ABPersonHasImageData(contact)) { iThumbnailData = CFBridgingRelease(ABPersonCopyImageDataWithFormat(contact, kABPersonImageFormatThumbnail)); } }