Після довгих пошуків я застряг із проблемою, яку (я вважаю) не було чітко вирішено.
Моя мета - витягнути телефонні номери зі списку контактів телефону. Дозвіл вже надано. Я використовую цей біт коду для отримання даних з даного контакту (змінна "людина"):
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")
}