2015-05-26 4 views
0

Мне нужно найти контакты 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

enter image description here

+0

Какие линии сбой и каково исключение? Вероятно, вам нужно только создать словарь и добавить его в массив, если у вас есть имя и номер телефона - в тот момент, когда вы предполагаете, что у всех контактов есть оба. Плохие контакты всегда будут проблемой. – jrturton

+0

Вы можете видеть, что есть два контакта с «Нет имени». У них также нет номеров контактов, но они все еще присутствуют в контактах, и это вызывает крушение. – Developer

+0

--------------- var nameOfPerson: String = (ABRecordCopyCompositeName (person) .takeRetainedValue() as! String) ---------------- Эта строка, вызывающая сбой для контактов и ошибок «Нет имени», является ------------------- фатальной ошибкой: неожиданно найдено нуль при развертывании необязательного значения ----- -------- – Developer

ответ

0

При получении контакта добавить проверку на ваш требуемые поля.

Например. Если вы используете номер, адрес электронной почты контакта, тогда проверьте, имеют ли они поле пустое значение или нет. Если пустое значение будет там, не добавляйте в свой список.

+0

Ошибка около нуля не пустая ------ фатальная ошибка: неожиданно найден nil во время разворачивания необязательного значения ---- И не могли бы вы дать мне знать, как проверить, является ли значение nil в следующем выражении? ------ var nameOfPerson: String = (ABRecordCopyCompositeName (person) .takeRetainedValue() как! String) ----? – Developer

+0

Пользовательская цельная цепочка. Используйте? вместо ! потому что необязательная ручка цепочки nil изящно. Дайте мне знать, если вам нужно больше разъяснений. –

+0

Nitesh, в недавнем обновлении Swift, вы не можете использовать? с. – Developer