Es gibt ein Problem mit AddressBook, das ich nicht reproduzieren kann, funktioniert Code auf meinem iPhone und iPad, geschieht dies auf dem Client-Telefon und führen zum Absturz der App. Soweit ich aus Crashlytics Problem in folgende Zeile sein sollte sehen:iOS AddressBook - Kontakt Bild absturz
let data = ABPersonCopyImageDataWithFormat(contact, kABPersonImageFormatThumbnail).takeRetainedValue()
Hier vollständigen Code für das Lesen Adressbuch:
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
}
}
…
}
Haben Sie Vorschläge haben, was so auf Kunden Telefon passieren könnte Ich kann diesen Fehler reproduzieren? Ist es möglich, dass ein Kontakt beschädigt ist? Wie soll ich damit umgehen?
Ich habe diesen Beitrag Get iOS contact image with ABPersonCopyImageData gesehen, dass ABPersonCopyImageData Null zurückgeben konnte, ich versuchte, damit umzugehen, aber App stürzt immer noch ab.
Könnten Sie den Code eingeben, der "versucht, das zu handhaben" bitte? Der verlinkte Beitrag sieht so aus, als würde er die optionalen Daten richtig behandeln. –
Sie sollten versuchen, diesen Code mit Null Bild Kontakt –
zu überprüfen Könnten Sie bitte Stack-Trace und/oder Fehlermeldung zu Ihrer Frage hinzufügen. –