小编Rob*_*Rob的帖子

Swift - 检查nil的非托管地址簿单值属性

我对iOS-Development和swift相对较新.但到目前为止,我总是能够通过对stackoverflow和一些文档和教程的一些研究来帮助自己.但是,有一个问题我找不到任何解决方案.

我想从用户地址簿中获取一些数据(例如单值属性kABPersonFirstNameProperty).因为.takeRetainedValue()如果此联系人在地址簿中没有firstName值,该函数会抛出错误,我需要确保该ABRecordCopyValue()函数确实返回一个值.我试图在一个闭包中检查这个:

let contactFirstName: String = {
   if (ABRecordCopyValue(self.contactReference, kABPersonFirstNameProperty) != nil) {
      return ABRecordCopyValue(self.contactReference, kABPersonFirstNameProperty).takeRetainedValue() as String
   } else {
      return ""
   }
}()
Run Code Online (Sandbox Code Playgroud)

contactReference 是一个类型的变量 ABRecordRef!

当地址簿联系人提供firstName值时,一切正常.但是如果没有firstName,则应用程序会崩溃.takeRetainedValue().似乎if语句没有帮助,因为ABRecordCopyValue()虽然没有firstName,但函数的非托管返回值不是nil.

我希望我能够清楚地解决问题.如果有人能帮我解决一些脑波,那将是很棒的.

unmanaged abaddressbook ios abrecordcopyvalue swift

12
推荐指数
2
解决办法
5566
查看次数

标签 统计

abaddressbook ×1

abrecordcopyvalue ×1

ios ×1

swift ×1

unmanaged ×1