Swift (iOS 8 SDK) Konvertieren Sie nicht verwaltetes <ABMultiValueRef> in ABMultiValueRef

Ich muss den Rückgabewert dieser Funktion aus dem Adressbuch-Framework konvertieren:

ABRecordCopyValue(nil, kABPersonPhoneProperty)

auf einen Wert vom Typ ABMultiValueRef

Diese Funktion ist derzeit folgendermaßen gekennzeichnet:

func ABRecordCopyValue(record: ABRecordRef!, property: ABPropertyID) -> Unmanaged<AnyObject>!

So kann ich es in Unmanaged umwandeln:

ABRecordCopyValue(person, kABPersonPhoneProperty) as Unmanaged<ABMultiValueRef>

Aber wie kann ich es dann als ABMultiValueRef erhalten, damit ich es an diese Funktion übergeben kann?

func ABMultiValueGetIndexForIdentifier(multiValue: ABMultiValueRef!, identifier: ABMultiValueIdentifier) -> CFIndex

Ich tat dies:

let managedPhones = Unmanaged.fromOpaque(phones.toOpaque()).takeUnretainedValue() as ABMultiValueRef

Und ich bekomme immer wieder diesen Compiler-Fehler:

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

Antworten auf die Frage(3)

Ihre Antwort auf die Frage