当没有电话号码时,应用程序崩溃

时间:2015-11-24 11:42:16

标签: ios swift

这是一个更好的例子:

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无法在没有爆炸的情况下返回零时,我应该怎么做#$ ^%。

1 个答案:

答案 0 :(得分:0)

如果ABRecordCopyValue返回nil,以下内容可以防止崩溃;但是如果返回一个值,它将存储在phoneNos

if let phoneNos = ABRecordCopyValue(person, kABPersonPhoneProperty)?.takeRetainedValue()
{
     print("\(person)'s phone number: \(phoneNos)")
}
else
{
     print("nay")
}