/ / Адресна книга: ABRecordCopyValue (особа, kABPersonPhoneProperty) не вдається отримати деякі номери - ios, swift, адресна книга, список контактів

Адресна книга: ABRecordCopyValue (особа, kABPersonPhoneProperty) не вдається отримати деякі номери - ios, swift, addressbook, контакт

Після довгих пошуків я застряг із проблемою, яку (я вважаю) не було чітко вирішено.

Моя мета - витягнути телефонні номери зі списку контактів телефону. Дозвіл вже надано. Я використовую цей біт коду для отримання даних з даного контакту (змінна "людина"):

let unmanagedPhones: ABMultiValueRef = ABRecordCopyValue(person, kABPersonPhoneProperty).takeUnretainedValue()
println("unmanagedPhone: (unmanagedPhones)")

Для деяких контактів на моєму телефоні це повертає наступне (я цензурував деякі цифри за допомогою "#"):

unmanagedPhone: ABMultiValueRef 0x170468d00 з 2 значеннями 0: $! Мобільний! $ (0x #########) - 1 (###) ### - #### (0x170 # 45 ###) 1: $! Робота! $ (0x #########) - 1 (###) ### - #### (0x # 70 ## 3 # a0)

Для багатьох інших це повертає:

unmanagedPhone: ABMultiValueRef 0x170474a40 з 0 значенням

Я підтвердив, що ці контакти ємати хоча б одне число. Досліджуючи адресну книгу, я не можу зрозуміти, чому деякі контакти працюють, а інші - "t. Хтось має поради або вказівки щодо того, як почати налагоджувати це? Дякую всім!

Використання Swift на Xcode 6.4, iOS 8.

Відповіді:

0 для відповіді № 1

Спробуйте це:

let unmanagedPhones = ABRecordCopyValue(person, kABPersonPhoneProperty)

//check to make sure we have phone numbers or we will get Fatal error
if unmanagedPhones != nil {

let phones: ABMultiValueRef = unmanagedPhones.takeUnretainedValue() as ABMultiValueRef
let allPhones = ABMultiValueCopyArrayOfAllValues(phones).takeRetainedValue() as NSArray

for eachPhone in allPhones{
print(eachPhone)
}
}
else {
println("No phone numbers found")
}