小编Van*_*oor的帖子

Swift(iOS 8 SDK)将非托管<ABMultiValueRef>转换为ABMultiValueRef

我需要从AddressBook框架转换此函数的返回值:

ABRecordCopyValue(nil, kABPersonPhoneProperty)
Run Code Online (Sandbox Code Playgroud)

到ABMultiValueRef类型的值

此功能目前标记为:

func ABRecordCopyValue(record: ABRecordRef!, property: ABPropertyID) -> Unmanaged<AnyObject>!
Run Code Online (Sandbox Code Playgroud)

所以我可以将它转换为Unmanaged,如下所示:

ABRecordCopyValue(person, kABPersonPhoneProperty) as Unmanaged<ABMultiValueRef>
Run Code Online (Sandbox Code Playgroud)

但是,我怎样才能将它作为ABMultiValueRef,以便我可以将它传递给这个函数?

func ABMultiValueGetIndexForIdentifier(multiValue: ABMultiValueRef!, identifier: ABMultiValueIdentifier) -> CFIndex
Run Code Online (Sandbox Code Playgroud)

我这样做了:

let managedPhones = Unmanaged.fromOpaque(phones.toOpaque()).takeUnretainedValue() as ABMultiValueRef
Run Code Online (Sandbox Code Playgroud)

我一直收到这个编译错误:

Bitcast requires both operands to be pointer or neither
%89 = bitcast %objc_object* %88 to %PSs9AnyObject_, !dbg !325
LLVM ERROR: Broken function found, compilation aborted!
Command /Applications/Xcode6-Beta3.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift failed with exit code 1
Run Code Online (Sandbox Code Playgroud)

unmanaged abrecordcopyvalue swift

14
推荐指数
1
解决办法
4408
查看次数

标签 统计

abrecordcopyvalue ×1

swift ×1

unmanaged ×1