【问题标题】:ABAddressBookGetPersonWithRecordID Crashes my AppABAddressBookGetPersonWithRecordID 使我的应用程序崩溃
【发布时间】:2015-12-21 05:28:19
【问题描述】:

我目前正在开发的应用程序必须使用委托来检索联系人的 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)
}

【问题讨论】:

    标签: ios swift abaddressbook abrecord


    【解决方案1】:

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

    另请参阅我关于此问题的文章https://medium.com/@dimpiax/swift-invitephonebook-9a6ef2636124,您还可以在此处找到 InvitePhoneBook 来源的链接。

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题。我不完全确定为什么,但是将 takeRetainedValue() 更改为 takeUnretainedValue() 解决了它。

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

      【讨论】:

        猜你喜欢
        • 2011-05-26
        • 2013-08-20
        • 2021-08-28
        • 2012-05-09
        • 2010-11-08
        • 2014-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多