Я пытаюсь получить имена контактов, вот как:
func getContactNames() {
let adbk : ABAddressBook? = ABAddressBookCreateWithOptions(nil, nil).takeRetainedValue()
let people = ABAddressBookCopyArrayOfAllPeople(adbk).takeRetainedValue() as [ABRecord]
for person in people {
contactList.append(ABRecordCopyCompositeName(person).takeRetainedValue() as String)
}
}
Когда у всех контактов есть имена, это работает, хотя, когда есть контакты без имен, приложение вылетает, и я получаю:
фатальная ошибка: неожиданно найдено nil при развертывании необязательного значения
Я пытался использовать ?
следующим образом:
let contact2 = (ABRecordCopyCompositeName(person)?.takeRetainedValue() as? String)
if contact2 != nil {
contactList.append(contact2!)
}
Тогда я всегда получал бы nil
.
Любые идеи, что я делаю неправильно?
nil
, но я бы рекомендовал больше проверять в стиле Swift, является ли необязательный нулевым или нет. Сделай так:if let contact2 = (ABRecordCopyCompositeName(person)?.takeRetainedValue() as? String){ contactList.append(contact2) }
- person Juri Noga   schedule 26.11.2015