gpt4 book ai didi

iOS AddressBook - 获取联系人图像崩溃

转载 作者:行者123 更新时间:2023-11-29 01:02:02 24 4
gpt4 key购买 nike

AddressBook 存在一些我无法重现的问题,代码在我的 iPhone 和 iPad 上运行,这发生在客户端手机上并导致应用程序崩溃。据我从 Crashlytics 中看到的问题应该在以下行中:

let data = ABPersonCopyImageDataWithFormat(contact, kABPersonImageFormatThumbnail).takeRetainedValue()

读取通讯录的完整代码如下:

    var err : Unmanaged<CFError>? = nil
let addressBookRef : ABAddressBook? = ABAddressBookCreateWithOptions(nil, &err).takeRetainedValue()
if addressBookRef == nil {
print(err)
return
}

let contacts = ABAddressBookCopyArrayOfAllPeople(addressBookRef).takeRetainedValue() as NSArray as [ABRecord]
for contact in contacts {
let firstName = ABRecordCopyValue(contact, kABPersonFirstNameProperty)?.takeRetainedValue() as? String
let lastName = ABRecordCopyValue(contact, kABPersonLastNameProperty)?.takeRetainedValue() as? String

var image: UIImage?
if ABPersonHasImageData(contact) {

let data = ABPersonCopyImageDataWithFormat(contact, kABPersonImageFormatThumbnail).takeRetainedValue()
if let img = UIImage(data: data) {
image = img
}

}



}

您对客户端手机上可能发生的情况有何建议,以便我可以重现此错误?是否有可能某些联系人已损坏?我该如何处理?

我看过这篇文章Get iOS contact image with ABPersonCopyImageData ABPersonCopyImageData 可能返回 nil,我尝试处理它,但应用程序仍然崩溃。

最佳答案

检查所有是否为零。如果 ABPersonCopyImageDataWithFormat 返回 nil,则在 nil 上调用 takeRetainedValue。然后也使用它 nil 来创建图像

guard let CFData = ABPersonCopyImageDataWithFormat(contact, kABPersonImageFormatThumbnail) else {
print("no cfdata")
return
}

if let data = CFData.takeRetainedValue {
if let img = UIImage(data: data) {
image = img
}
}

关于iOS AddressBook - 获取联系人图像崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36891647/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com