私は再現できないAddressBookに問題があります。私のiPhoneとiPadでコードが動作します。これはクライアントの電話機で起こり、アプリがクラッシュします。私の知る限りCrashlyticsの問題から見ることができるように行を次のようにする必要があります。ここではiOSアドレス帳 - 連絡先イメージのクラッシュを受け入れる
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を返す可能性があると私はそれを処理しようとしましたが、アプリはまだクラッシュしています。
「それを処理しようとしました」というコードを入力してください。リンクされた投稿は、オプションのデータを適切に扱うように見えます。 –
このコードをnil image contact –
でチェックしてください。あなたの質問にスタックトレースやエラーメッセージを追加してください。 –