Ich bin relativ neu zu iOS-Entwicklung und swift. Aber bis zu diesem Punkt war ich immer in der Lage, mir etwas Forschung über Stackoverflow und verschiedene Dokumentationen und Tutorials zu leisten. Allerdings gibt es ein Problem, ich konnte noch keine Lösung finden.Swift - Überprüfen unmanaged Adressbuch Einzelwert-Eigenschaft für Null
Ich möchte einige Daten aus dem Adressbuch des Benutzers (z. B. die Einzelwerteigenschaft kABPersonFirstNameProperty
) abrufen. Da die .takeRetainedValue()
-Funktion einen Fehler auslöst, wenn dieser Kontakt keinen firstName-Wert im Adressbuch hat, muss ich sicherstellen, dass die ABRecordCopyValue()
-Funktion einen Wert zurückgibt. Ich habe versucht, dies in einem Verschluss zu überprüfen:
let contactFirstName: String = {
if (ABRecordCopyValue(self.contactReference, kABPersonFirstNameProperty) != nil) {
return ABRecordCopyValue(self.contactReference, kABPersonFirstNameProperty).takeRetainedValue() as String
} else {
return ""
}
}()
contactReference
eine Variable vom Typ ist ABRecordRef!
Wenn ein Adressbuchs Kontakt einen Vornamen Wert liefert, funktioniert alles einwandfrei. Aber wenn es keinen firstName gibt, stürzt die Anwendung durch die .takeRetainedValue()
Funktion ab. Es scheint, dass die if-Anweisung nicht hilft, da der nicht verwaltete Rückgabewert der ABRecordCopyValue()
-Funktion nicht null ist, obwohl es keinen firstName gibt.
Ich hoffe, ich konnte mein Problem klar machen. Es wäre toll, wenn mir jemand mit einer Gehirnwelle helfen könnte.
Ich mag deine zweite Version. Danke dafür! – Rob
Nach ein paar Tagen war dies die Antwort, die ich suchte !! Vielen Dank für das Teilen! – kev
Option 1 wirken Wunder – Dean