Мне нужно найти контакты iPhone в моем приложении, и для этого я написал код. В некоторых из iPhone несколько контактов не являются подлинными, я имею в виду, что имя сохраняется как пустое или любая случайная строка типа «6.w S» и в некотором количестве не является подлинной. Я хочу получить контакты, которые не похожи, как показано на рисунке ниже, поскольку это сбой моего приложения. Итак, какие проверки мне нужно привести, чтобы избежать таких контактов. Я использую Swift и мой код также написано ниже:Как получить только настоящие контакты с iPhone в вашем приложении?
Мой код:
var people = ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering(self.objAddressBook, nil, ABPersonGetSortOrdering()).takeUnretainedValue() as NSArray as [ABRecord]
for person in people
{
var multiPhones:ABMultiValueRef = ABRecordCopyValue(person, kABPersonPhoneProperty).takeRetainedValue()
for phoneNumbers in 0..<ABMultiValueGetCount(multiPhones)
{
var phoneNumber = ABMultiValueCopyValueAtIndex(multiPhones, phoneNumbers).takeRetainedValue() as! String
var nameOfPerson: String = (ABRecordCopyCompositeName(person).takeRetainedValue() as! String)
var personRecordDic = ["name":nameOfPerson,"phone":phoneNumber]
self.contactsArray.addObject(personRecordDic)
}
}
Выпуск Причинение Contactss
Какие линии сбой и каково исключение? Вероятно, вам нужно только создать словарь и добавить его в массив, если у вас есть имя и номер телефона - в тот момент, когда вы предполагаете, что у всех контактов есть оба. Плохие контакты всегда будут проблемой. – jrturton
Вы можете видеть, что есть два контакта с «Нет имени». У них также нет номеров контактов, но они все еще присутствуют в контактах, и это вызывает крушение. – Developer
--------------- var nameOfPerson: String = (ABRecordCopyCompositeName (person) .takeRetainedValue() as! String) ---------------- Эта строка, вызывающая сбой для контактов и ошибок «Нет имени», является ------------------- фатальной ошибкой: неожиданно найдено нуль при развертывании необязательного значения ----- -------- – Developer