
在Objective-C中:
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; 在Swift中:
var image: UIImage!if ABPersonHasImageData(person) { var imgData = (ABPersoncopyImageDataWithFormat(person,kABPersonImageFormatOriginalSize)) image = UIImage.imageWithData(imgData) //Here get the error } 如中所述 Working with Cocoa Data Types,您必须使用takeUnretainedValue()或takeRetainedValue()将非托管对象转换为内存管理对象.
在你的情况下
if (ABPersonHasImageData(person)) { let imgData = ABPersoncopyImageDataWithFormat(person,kABPersonImageFormatOriginalSize).takeRetainedValue() let image = UIImage(data: imgData)} 因为ABPersoncopyImageDataWithFormat()返回一个(1)保留值.
总结以上是内存溢出为你收集整理的swift – 如何将unmanaged转换为NSData?全部内容,希望文章能够帮你解决swift – 如何将unmanaged转换为NSData?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)