Трябва да преобразувам върнатата стойност на тази функция от рамката на адресната книга:
ABRecordCopyValue(nil, kABPersonPhoneProperty)
към стойност от тип ABMultiValueRef
В момента тази функция е маркирана като:
func ABRecordCopyValue(record: ABRecordRef!, property: ABPropertyID) -> Unmanaged<AnyObject>!
Така че мога да го конвертирам в Unmanaged така:
ABRecordCopyValue(person, kABPersonPhoneProperty) as Unmanaged<ABMultiValueRef>
Но тогава как мога да го получа като ABMultiValueRef, така че да мога да го предам на тази функция?
func ABMultiValueGetIndexForIdentifier(multiValue: ABMultiValueRef!, identifier: ABMultiValueIdentifier) -> CFIndex
Направих го:
let managedPhones = Unmanaged.fromOpaque(phones.toOpaque()).takeUnretainedValue() as ABMultiValueRef
И продължавам да получавам тази грешка на компилатора:
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