在iPhone应用程序中从通讯录获取照片

5

我想从我的iPhone应用程序中的通讯录中获取联系人姓名和照片。我能够获取联系人并将其存储到数组中,但是现在不知道如何获取联系人的照片。我正在使用的代码如下:

ABAddressBookRef ab=ABAddressBookCreate();
NSArray *arrTemp=(NSArray *)ABAddressBookCopyArrayOfAllPeople(ab);  

arrContact=[[NSMutableArray alloc] init];
for (int i=0;i<[arrTemp count];i++) 
{
    NSMutableDictionary *dicContact=[[NSMutableDictionary alloc] init];
    NSString *str=(NSString *) ABRecordCopyValue([arrTemp objectAtIndex:i], kABPersonFirstNameProperty);
    @try 
    {
        [dicContact setObject:str forKey:@"name"];
    }
    @catch (NSException * e) {
        [dicContact release];
        continue;
    }
    [arrContact addObject:dicContact];
    NSLog(@"mohit inside the loop");
    [dicContact release];
}

我希望在该数组(arrContacts)中获取联系人的照片和姓名,并在表格中显示它们。请给我提供指导。谢谢。
2个回答

6

在ARC模式下

NSData *imgData = (__bridge_transfer NSData *)ABPersonCopyImageDataWithFormat(record, kABPersonImageFormatThumbnail);

其中record是ABRecordRef类的对象

希望这能帮到您。


4
在iOS 4及以上版本中,您可以使用以下方法获取图像:
ABPersonCopyImageDataWithFormat(person, kABPersonImageFormatOriginalSize);

或者

ABPersonCopyImageData(person);

person的数据类型是什么?它是NSMutableArray类型吗? - M.S.B
ABRecordRef,与您用于ABRecordCopyValue的[arrTemp objectAtIndex:i]相同。要自己找出这个,请在Xcode中键入ABPersonCopyImageData,然后按住alt键单击它,魔术般地,再次单击弹出窗口中的它以转到完整文档。 - valexa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接