如何将Unmanaged <cftyperef>转换为Swift 3

时间:2016-07-21 16:58:45

标签: swift pointers unmanaged

如何将此功能从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'

请帮帮我

1 个答案:

答案 0 :(得分:0)

  

从iOS9开始,不推荐使用AddressBook框架,Apple也随时使用   会说:&#34;地址簿实际上是从iOS 10.x&#34;中删除的。你更好   马上为Contacts框架做好准备。

您正在使用如此冗余的代码,即使在Swift2中也不需要某些部分。

要从T检索Unmanaged<T>?个对象,您只需立即致电takeRetainedValue()takeUnretainedValue()

let phones: ABMultiValue? = unmanagedPhones?.takeRetainedValue()
  • 您应该使用takeRetainedValue()作为Copy - 统治函数的结果。
  • ABMultiValue是Swift3中CFTypeRef的类型,因此您无需转换结果。
  • 关注零安全编码,因为Unmanaged<T>?可能是零。
相关问题