首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Unmanaged<CFTypeRef>转换为Swift 3

如何将Unmanaged<CFTypeRef>转换为Swift 3
EN

Stack Overflow用户
提问于 2016-07-21 16:58:44
回答 1查看 1.1K关注 0票数 0

如何将此函数从SWIFT2.3重写为Swift 3

代码语言:javascript
复制
 let unmanagedPhones = ABRecordCopyValue(person, kABPersonPhoneProperty)

 let phones: ABMultiValue = Unmanaged.fromOpaque(unmanagedPhones.toOpaque()).takeUnretainedValue() as NSObject as ABMultiValue

编译器说:'Unmanaged<CFTypeRef>?' has no member 'toOpaque'

请帮帮我

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-21 20:55:06

AddressBook框架在iOS9中被废弃,苹果随时会说:"AddressBook实际上已经从iOS 10.x中删除了“。你最好尽快为联系人框架做准备。

您所使用的代码非常冗余,以至于即使在Swift2中也不需要某些部分。

要从T中检索Unmanaged<T>?对象,只需立即调用takeRetainedValue()takeUnretainedValue()即可。

代码语言:javascript
复制
let phones: ABMultiValue? = unmanagedPhones?.takeRetainedValue()
  • 您应该将takeRetainedValue()用于Copy-ruled函数的结果。
  • ABMultiValue是CFTypeRef在Swift3中的一个类型,所以您不需要转换结果。
  • 关心零安全编码,因为Unmanaged<T>?可能是零。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38510196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档