如何在应用程序中仅从iPhone获取正版联系人?

如何在应用程序中仅从iPhone获取正版联系人?,iphone,swift,ios8,contacts,xcode6.3.1,Iphone,Swift,Ios8,Contacts,Xcode6.3.1,我需要在我的应用程序中获取iPhone的联系人,我已经为此编写了代码。在一些iphone中,很少有联系人不是正版的,我的意思是,姓名被另存为空白或任何随机字符串,如“6.ws”,并且在某些数字中不是正版的。我想获取与下图所示不同的联系人,因为它正在使我的应用程序崩溃。那么,我需要做哪些检查,以避免获取这样的联系人。我正在使用Swift,我的代码也写在下面: 我的代码: var people = ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOr

我需要在我的应用程序中获取iPhone的联系人,我已经为此编写了代码。在一些iphone中,很少有联系人不是正版的,我的意思是,姓名被另存为空白或任何随机字符串,如“6.ws”,并且在某些数字中不是正版的。我想获取与下图所示不同的联系人,因为它正在使我的应用程序崩溃。那么,我需要做哪些检查,以避免获取这样的联系人。我正在使用Swift,我的代码也写在下面:

我的代码:

var people = ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering(self.objAddressBook, nil, ABPersonGetSortOrdering()).takeUnretainedValue() as NSArray  as [ABRecord]

        for person in people
        {
            var multiPhones:ABMultiValueRef = ABRecordCopyValue(person, kABPersonPhoneProperty).takeRetainedValue()

            for phoneNumbers in 0..<ABMultiValueGetCount(multiPhones)
            {
                var phoneNumber = ABMultiValueCopyValueAtIndex(multiPhones, phoneNumbers).takeRetainedValue() as! String

                var nameOfPerson: String = (ABRecordCopyCompositeName(person).takeRetainedValue() as! String)

                var personRecordDic = ["name":nameOfPerson,"phone":phoneNumber]

                self.contactsArray.addObject(personRecordDic)
            }
        }
var people=abAddressBookCopyArrayFallPeopleInSourceWithSortOrdering(self.objaAddressBook,nil,ABPersonGetSortOrdering())。将未保留的值()作为NSArray作为[ABRecord]
为人处事
{
var multiPhones:ABMultiValueRef=ABRecordCopyValue(person,kapersonphoneproperty)

对于0..中的电话号码,在获取联系人时将验证添加到所需字段


例如,如果您使用的是号码、联系人电子邮件,则检查这些字段是否有空值。如果有空值,则不要将其添加到列表中。

哪些行正在崩溃,例外情况是什么?如果您同时拥有姓名和电话号码,您可能只需要创建一个字典并添加到数组中-此时您正在创建假设所有联系人都有。错误的联系人数据将始终是一个问题。您可以看到有两个联系人“没有姓名”。他们没有联系人号码,但仍然存在于联系人中,这会导致崩溃。------var nameoperson:String=(ABRecordCopyCompositeName(person).takeRetainedValue()as!String)------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------“我不想获取没有足够信息的联系人。您对此问题有任何答案吗?错误是关于nil而非空------致命错误:在展开可选值时意外发现nil------您能告诉我如何检查以下语句中的值是否为nil吗?-----var nameoperson:String=(ABRecordCopyCompositeName(person).takeRetainedValue()作为!字符串)--?用户可选链接..使用?而不是!因为可选链接可以优雅地处理nil..如果需要更多说明,请告诉我。