Iphone 根据通讯簿id从通讯簿访问联系人图像

Iphone 根据通讯簿id从通讯簿访问联系人图像,iphone,image,contact,abaddressbook,Iphone,Image,Contact,Abaddressbook,每个人都知道,我们可以创建一个地址簿(ABAddressBook),复制数组中的所有人,然后创建一个记录引用(ABRecordRef),然后使用NSData复制其图像数据,如下所示: ABAddressBookRef addressBook = ABAddressBookCreate( ); CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople( addressBook ); ABRecordRef recordReference =

每个人都知道,我们可以创建一个地址簿(ABAddressBook),复制数组中的所有人,然后创建一个记录引用(ABRecordRef),然后使用NSData复制其图像数据,如下所示:

ABAddressBookRef addressBook = ABAddressBookCreate( );
CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople( addressBook );
ABRecordRef recordReference = CFArrayGetValueAtIndex(allPeople, addressIndex);
NSData *imageData = (NSData *)ABPersonCopyImageData(recordReference);
现在,这可以很好地工作,这是一个普遍的事实,但在我的案例(应用程序)中,我有一个小问题,如果用户最初保存了一个联系人,并且没有添加/上传任何图像,那么当我们访问该联系人的图像数据时,我们的图像是空的,因此,我给出或分配了一个默认图像。但如果用户稍后上传联系人的图像或修改联系人的现有图像,这意味着更新后的图像将不会按预期显示,因此我们不能依赖地址簿名称或某些索引等

因此,我想出了一个主意,保存唯一的联系人id,然后根据其id获取联系人图像。在此过程中,我已将唯一的联系人id保存到数据库中,接下来,使用模型类保存id值,然后将模型类保存到数组中

这是用于理解的示例代码:

ReminderClass *reminderToDisplay = [self.remindersArray objectAtIndex:indexPath.row];
NSString *contactIDString = reminderToDisplay.contactID;
int addressIndex = [contactIDString integerValue];
现在我们知道,我们可以有一个ABRecordRef实例,从而复制它的图像数据,但我们知道它的语法是:

ABRecordRef personID = CFArrayGetValueAtIndex(CFArrayRef theArray, CFIndex idx);
我可以用任何方式指定addressIndex来代替CFIndex idx

但我对数组部分印象深刻,即CFArrayRef,因为我有一个包含所有id详细信息的NSMutableArray,即提醒数组

现在我已经从NSMutableArrayCFArrayRef搜索了类型转换方法

但发现了一些问题,反之亦然,可以查看一个示例问题

请指导我,如果有任何方法可以克服这一点,这样我就可以获得适当的图像为各自的联系人,任何帮助是非常感谢


提前感谢:)

请通过以下链接找到人力资源管理先生的最佳解决方案:

这肯定会帮助您找到正确的方法,谢谢:)