Вот лучший пример:Приложение сбоями, когда номер телефона не присутствует
let person: ABRecordRef = ABPersonCreate().takeRetainedValue()
let phoneNos = ABRecordCopyValue(person, kABPersonPhoneProperty).takeRetainedValue()
if ABMultiValueGetCount(phoneNos) > 0 {
print("yay") } else {
print("nay") //you will never see this }
Всегда выходит из строя.
let person: ABRecordRef = ABPersonCreate().takeRetainedValue()
//lets add a number then
let phoneNumbers: ABMutableMultiValue =
ABMultiValueCreateMutable(ABPropertyType(kABMultiStringPropertyType)).takeRetainedValue()
ABMultiValueAddValueAndLabel(phoneNumbers, "1234", kABPersonPhoneMainLabel, nil)
ABRecordSetValue(person, kABPersonPhoneProperty, phoneNumbers, nil)
let phoneNos = ABRecordCopyValue(person, kABPersonPhoneProperty).takeRetainedValue()
if ABMultiValueGetCount(phoneNos) > 0 {
print("yay")
} else {
print("nay") //you will never see this
}
Работы просто отлично. Мне нужно проверить, есть ли номер телефона, как # $ ^% я должен сделать это, когда ABRecordCopyValue не может вернуть нуль без взрыва.
Вы пробовали это: 'http://stackoverflow.com/questions/24534436/check-if-abmultivalueref-is-has -no-values'? –
я уверен. Я не мог понять, как это применимо. Они рушились без контакта, а не числа для контакта, поэтому они скопировали его в массив, чтобы получить количество людей. Если я даже коснусь 'ABRecordCopyValue' с' kABPersonPhoneProperty', возвращающим нуль, он сработает. – user0000001