ABAddressBookGetPersonWithRecordID崩溃我的应用程序

时间:2015-09-23 18:53:05

标签: ios swift abaddressbook abrecord

我目前正在处理的应用程序必须使用委托来检索联系人的ABRecord,因为对象的所有关联联系人的表都在容器视图中。到目前为止一切正常,唯一的问题是当我尝试从AddressBook View Controller向后移动后再次检索记录时,应用程序崩溃了。这是错误和代码的屏幕截图:

Error on ABRecord

守则

func showContactInterface(contacto: AnyObject) {
    print(self.addressBookRef)

    let peopleViewController = ABPersonViewController()

    let recordID:ABRecordID = (((contacto as! Contacto).valueForKey("recordRef")?.intValue) as ABRecordID?)!

    var recordRef:ABRecordRef? = ABAddressBookGetPersonWithRecordID(self.addressBookRef, recordID).takeRetainedValue()

    peopleViewController.displayedPerson = recordRef!
    self.navigationController?.pushViewController(peopleViewController, animated: true)
}

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。我不完全确定原因,但更改takeRetainedValue()以取得UnretainedValue()解决了它。

var recordRef:ABRecordRef? ABAddressBookGetPersonWithRecordID(self.addressBookRef, recordID).takeUnretainedValue()

答案 1 :(得分:0)

似乎是窃听Swift获取ABAddressBook的数据, 所以更好的解决方案是在ObjectiveC上获取一些特定数据并通过ObjectiveC_Bridge进行通信。

另请查看我关于此问题的文章https://medium.com/@dimpiax/swift-invitephonebook-9a6ef2636124,您也可以找到指向 InvitePhoneBook 来源的链接。