Null值从swift中的AddressBook框架返回 [英] Null value returns from AddressBook framework in swift

查看:125
本文介绍了Null值从swift中的AddressBook框架返回的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的swift应用程序中,我正在从AddressBook框架中检索AddressBook联系人。除下列情况外,会成功检索联系人。

In my swift app, I am retrieving AddressBook contacts from AddressBook framework. Contacts are retrieved successfully except the following case.

案例1:

如果我在没有联系人名称的情况下单独保存联系人号码到AddressBook,联系人已成功添加。

If I save a contact number alone without contact name to AddressBook, contact is successfully added.

但是,如果我尝试检索没有名称的联系人,应用程序崩溃,说收到致命错误。

But, If I try to retrieve that contact which does not having name, App crashes, saying that fatal error received.

编码:

var contactName: String = ABRecordCopyCompositeName(addressBookRecord).takeRetainedValue() as NSString as String

我不知道如何处理这个null价值例外。请指导我,如何解决这个问题。

I don't know how to handle this null value exception. Kindly guide me, how to solve this.

推荐答案

如果您有任何没有名字的联系方式,此代码不会崩溃:

This code will not crash if you got any contact without name:

func processAddressbookRecord(addressBookRecord: ABRecordRef) {

    let addressBookRef: ABAddressBookRef = ABAddressBookCreateWithOptions(nil, nil).takeRetainedValue()

    let people:NSArray = ABAddressBookCopyArrayOfAllPeople(addressBookRef).takeRetainedValue();

    for person in people{
        if  let name:String = ABRecordCopyValue(person, kABPersonFirstNameProperty)?.takeRetainedValue() as? String {
            let numbers:ABMultiValue = ABRecordCopyValue(person, kABPersonPhoneProperty).takeRetainedValue()

            if let number:String = ABMultiValueCopyValueAtIndex(numbers,0)?.takeRetainedValue() as? String {
                print("number = \(number)");
                arrayOfContacts.addObject(["\(name)":"\(number)"]);
            }
        }
    }
}

原创发布:在SWIFT从iPhone获取联系电话时应用崩溃

这篇关于Null值从swift中的AddressBook框架返回的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆