Ios 如何在Swift中从通讯簿获取imageContact?

Ios 如何在Swift中从通讯簿获取imageContact?,ios,swift,xcode6,Ios,Swift,Xcode6,我想用Swift从通讯录中获取联系人的图像,但当我尝试获取该图像时,我得到一个错误:ABPersonIMageFormat不能转换为ABPropertyID 我不知道该怎么投,或者如果这不可能,我是怎么尝试的 这是我的代码: var addressBook: ABAddressBookRef? var contactList: NSArray = ABAddressBookCopyArrayOfAllPeople(addressBook).takeRetainedValue() f

我想用Swift从通讯录中获取联系人的图像,但当我尝试获取该图像时,我得到一个错误:ABPersonIMageFormat不能转换为ABPropertyID

我不知道该怎么投,或者如果这不可能,我是怎么尝试的

这是我的代码:

 var addressBook: ABAddressBookRef?
 var contactList: NSArray = ABAddressBookCopyArrayOfAllPeople(addressBook).takeRetainedValue()

    for record:ABRecordRef in contactList {
        var contactPerson: ABRecordRef = record
        var contactName: String = ABRecordCopyCompositeName(contactPerson).takeRetainedValue() as NSString
        var contactid = ABRecordGetRecordID(contactPerson)

        var image = ABRecordCopyValue(contactPerson, kABPersonImageFormatThumbnail).takeUnretainedValue()  // Here get the error
如何获取在UIImageView中显示此内容的图像


谢谢

ABRECORDCYVALUE接受ABPropertyID。要使用ABPersonImageFormat获取图像,需要使用ABPersonCopyImageDataWithFormat:

    for record:ABRecordRef in contactList {
        var contactPerson: ABRecordRef = record
        var contactName: String = ABRecordCopyCompositeName(contactPerson).takeRetainedValue() as NSString
        var contactid = ABRecordGetRecordID(contactPerson)

        var image =  ABPersonCopyImageDataWithFormat(contactPerson, kABPersonImageFormatThumbnail).takeRetainedValue() as CFDataRef
    }
更新: 通过更改
ABPersonCopyImageDataWithFormat
返回的内容(
非托管!
),您可以接受
nil
,如下所示:

let image =  ABPersonCopyImageDataWithFormat(contactPerson, kABPersonImageFormatThumbnail)?.takeRetainedValue() as CFDataRef!

您应该将图像数据视为可选数据

if let imgData =  ABPersonCopyImageDataWithFormat(person, kABPersonImageFormatThumbnail)?.takeRetainedValue() {
    let image = UIImage(data: imgData)
    // Contact has image
} else {
    // Contact has not image
}

你是对的-自从这个答案后,Swift和通讯录有了一些变化。我更新了该行以接受一个图像(如果有),或者是零