我在Swift项目中通过桥接头文件使用了一个Objective-C类。该方法的签名看起来像这样:
- (CFArrayRef)someMethod:(someType)someParameter;
我先获取该类的实例,调用方法并保存值:
var myInstance = MyClassWithThatMethod();
var cfArr = myInstance.someMethod(someValue);
然后尝试从数组中获取一个值:
var valueInArrayThatIWant = CFArrayGetValueAtIndex(cfArr, 0);
然而我遇到了错误
Unmanaged<CFArray>
与CFArray
不相同。这里的Unmanaged<CFArray>
是什么意思呢?我查看了如何将CFArray转换为Swift Array?,但我并不需要将数组转换为Swift数组(虽然这样做也不错)。我只需要能够从数组中获取值。
我还尝试了将
CFArray
传递到函数中的方法,这在这个答案中有说明:func doSomeStuffOnArray(myArray: NSArray) {
}
然而,当我使用它时,我得到了类似的错误:
doSomeStuffOnArray(cfArr); // Unmanaged<CFArray>' is not identical to 'NSArray'
我正在使用CFArray
,因为我需要存储一个CGPathRef
数组,而这个数组无法存储在NSArray
中。
那么我应该如何在Swift中使用CFArray
?
CGPathRef
强制转换为id
在 Objective-C 中很有帮助,但不确定在 Swift 中是否适用。 - duci9yUIBezierPath
,它可以包含一个CGPath
,并符合NSCoding
协议,因此你应该能够将其放入一个NSArray
中。 - zaphCFArrayRef
,而不是使用本地数组作为明显的解决方案呢?有特别的原因吗? - duci9y