如何从 Swift 2.3 覆盖此函数到 Swift 3
let unmanagedPhones = ABRecordCopyValue(person, kABPersonPhoneProperty)
let phones: ABMultiValue = Unmanaged.fromOpaque(unmanagedPhones.toOpaque()).takeUnretainedValue() as NSObject as ABMultiValue
编译器说:'Unmanaged<CFTypeRef>?' has no member 'toOpaque'
请帮助我
最佳答案
AddressBook framework is deprecated as of iOS9, and at any time Apple would say: "AddressBook is actually removed from iOS 10.x". You better get ready for Contacts framework soon.
您使用的代码过于冗余,以至于某些部分即使在 Swift2 中也不需要。
检索T
来自 Unmanaged<T>?
的对象,您只需调用 takeRetainedValue()
或takeUnretainedValue()
立即。
let phones: ABMultiValue? = unmanagedPhones?.takeRetainedValue()
- 您应该使用
takeRetainedValue()
对于Copy
的结果- 规则函数。 -
ABMultiValue
是 Swift3 中 CFTypeRef 的类型别名,因此您无需转换结果。 - 关心零安全编码,如
Unmanaged<T>?
可能为零。
关于swift - 如何将 Unmanaged<CFTypeRef> 转换为 Swift 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38510196/