Я отношусь к iOS-Development и быстрому. Но до этого момента я всегда мог помочь себе в некоторых исследованиях в stackoverflow и нескольких документах и учебниках. Однако есть проблема, которую я пока не нашел.
Я хочу получить некоторые данные из адресной книги пользователей (например, свойство одиночного значения kABPersonFirstNameProperty
). Поскольку функция .takeRetainedValue()
вызывает ошибку, если этот контакт не имеет значения firstName в адресной книге, мне нужно убедиться, что функция ABRecordCopyValue()
возвращает значение. Я попытался проверить это в закрытии:
let contactFirstName: String = {
if (ABRecordCopyValue(self.contactReference, kABPersonFirstNameProperty) != nil) {
return ABRecordCopyValue(self.contactReference, kABPersonFirstNameProperty).takeRetainedValue() as String
} else {
return ""
}
}()
contactReference
- это переменная типа ABRecordRef!
Когда контакт адресной книги предоставляет значение firstName, все работает нормально. Но если firstName отсутствует, приложение вылетает с помощью функции .takeRetainedValue()
. Кажется, что инструкция if не помогает, потому что неуправляемое возвращаемое значение функции ABRecordCopyValue()
не равно нулю, хотя firstName отсутствует.
Надеюсь, я смог сделать свою проблему понятной. Было бы здорово, если бы кто-нибудь мог помочь мне с некоторой мозговой волной.