- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我需要将我的 Objective-C 转换为 Swift,以便从地址簿中获取联系人的图像。但是我从 CFData
到 NSData
的转换中遇到错误,我不知道如何让它工作。我该怎么做才能使这项工作正常进行?
在 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 - 如何将非托管 <CFData> 转换为 NSData?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25262542/
我有一个CFMutableDictionaryRef ,调试器中的部分内容是: "device-id" = ; model = ; "vendor-id" = ; 现在我可以获得 key model
我在使用 AFNetworking 时遇到问题。我使用以下方法通过 GET 从我的服务器请求大量 JSON 数据: [[SessionResponseClient sharedClient] getP
我想在 Swift 中创建一些 PDF 页面。 这是我创建 PDF 页面的代码 // Initialize context and other stuff CGPDFContextBeginPage(
在应用程序启动时,我的 Cocoa 应用程序立即创建两个 CFData 对象。一个大小为 34 MB,另一个大小为 57 MB。我似乎无法弄清楚这些对象是什么或者它们来自 Instruments 中的
我有以下代码来阅读PDF页面。 问题是每次我阅读仪器分析的页面时,CFData (store) 都会增加大约 1MB?任何帮助表示赞赏。 CGColorSpaceRef colorSpace = CG
我需要将我的 Objective-C 转换为 Swift,以便从地址簿中获取联系人的图像。但是我从 CFData 到 NSData 的转换中遇到错误,我不知道如何让它工作。我该怎么做才能使这项工作正常
我只能在特定应用程序中使用 CoreFoundation,并且无权访问 NSData。 我需要使用内存映射访问文件中的数据,因为文件可能非常大。使用 NSData,我可以使用 +dataWithCon
我需要从 C 调用一些 Swift 代码,它接受一个输入字节数组并生成一个输出字节数组。 这是在桥接头中: typedef void (*SwiftFunc)(const uint8_t* input
在连续几天用头撞墙和失眠之后,我希望能在这里找到一些帮助。我浏览了这里的各种帖子,但似乎没有一个答案能为我提供解决方案。 简而言之,我的问题是我的应用程序在大量使用 UIWebView(>10 分钟)
我遇到分配内存过多的问题。我的应用程序分配内存达到 100MB!是的...我正在使用ARC。大部分内存分配是由 CFData 分配的(据我所知,它是 CoreImage 过滤器)。对图像应用滤镜后,C
用户第一次打开我的应用程序时,我需要下载大量数据。我以 JSON 格式从服务器获取所有这些数据。根据用户的不同,这些 JSON 文件的大小可能在 10kb 到 30mb 之间,并且有 10 多个。 当
根据 GDPR 要求,我使用 Apple 内置的“安全”模块来帮助加密和解密信息。我能够使用文档相当轻松地生成我的私钥和公钥。 我现在发现自己的问题是在尝试进行加密时。在我关注的 Apple 文档中(
我有一个 function返回一个 std::string 对象。我正在使用 Cocoa/CoreGraphics,我需要一种方法将该字符串中的数据放入 CFData object这样我就可以将 th
此代码应该从 CGImageRef 开始获取每个像素的值: UIImage* image = [UIImage imageNamed:@"mask.bmp"]; CGImageRef aCGImage
我正在使用 Swift 与核心 MIDI API 进行交互,但在使用 MIDIThruConnectionFind 函数时遇到了一些问题。 documentation陈述如下 func MIDIThr
我有一个不使用 ARC 的库。 简化的代码如下所示: // // test.m // test-cast // #import static CFDataRef CFDataCreateFrom
我正在尝试对首选项文件进行逆向工程(不是为了任何邪恶的目的,只是为了我可以编写它的使用脚本),其中存储了坐标数组。 这是属性列表中的重要片段: $class CF$UID
我需要你的帮助,此代码在 Swift 3 中不再编译 //: Let's set up the `sockaddr_in` C structure using the initializer. var
我在后台线程中使用 NSData -initWithContentsOfURL 下载一些 4k 图像。我可以在 Instruments 中看到我的 CFData(存储)不断增长并增加到 200MB(顺
我正在尝试访问此 answer 之后的内在矩阵. 通过运行下面的指令,我能够得到一个 48 字节的 AnyObject。 ,我进一步将其转换为 CFData . let camData = CMGet
我是一名优秀的程序员,十分优秀!