Tag: unmanaged

Swift – 检查非托pipe地址簿单值属性为零

我是相对新的iOS开发和迅速。 但是到目前为止,我总是能够通过一些关于计算器和一些文档和教程的研究来帮助自己。 但是,还有一个问题,我找不到任何解决scheme。 我想从用户地址簿中获取一些数据(例如,单个值属性kABPersonFirstNameProperty )。 由于.takeRetainedValue()函数会引发错误,如果此联系人没有在.takeRetainedValue()的firstName值,我需要确保ABRecordCopyValue()函数确实返回一个值。 我试图在closures中检查这个: let contactFirstName: String = { if (ABRecordCopyValue(self.contactReference, kABPersonFirstNameProperty) != nil) { return ABRecordCopyValue(self.contactReference, kABPersonFirstNameProperty).takeRetainedValue() as String } else { return "" } }() contactReference是ABRecordRef!types的variablesABRecordRef! 当地址簿联系人提供firstName值时,一切工作正常。 但是,如果没有名字,则应用程序会通过.takeRetainedValue()函数崩溃。 看来,if语句没有帮助,因为ABRecordCopyValue()函数的非托pipe返回值不是nil,尽pipe没有firstName。 我希望我能够清楚地说明我的问题。 如果有人能帮助我解决一些脑波,那将是非常棒的。