Ios 如何在Swift中从通讯簿获取imageContact?
我想用Swift从通讯录中获取联系人的图像,但当我尝试获取该图像时,我得到一个错误:ABPersonIMageFormat不能转换为ABPropertyID 我不知道该怎么投,或者如果这不可能,我是怎么尝试的 这是我的代码:Ios 如何在Swift中从通讯簿获取imageContact?,ios,swift,xcode6,Ios,Swift,Xcode6,我想用Swift从通讯录中获取联系人的图像,但当我尝试获取该图像时,我得到一个错误:ABPersonIMageFormat不能转换为ABPropertyID 我不知道该怎么投,或者如果这不可能,我是怎么尝试的 这是我的代码: var addressBook: ABAddressBookRef? var contactList: NSArray = ABAddressBookCopyArrayOfAllPeople(addressBook).takeRetainedValue() f
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和通讯录有了一些变化。我更新了该行以接受一个图像(如果有),或者是零