繁体   English   中英

如何使用SwiftAddressBook操作iOS联系人?

[英]How to manipulate iOS contacts with SwiftAddressBook?

我正在尝试让所有用户联系,并查看他们是否已经在后端指定了。 我首先尝试使用SwiftAddressBook获取所有联系人,然后我想编辑所有电话号码并在电话号码中添加国家/地区代码。

我做了这个功能,但是不起作用,只显示电话号码。

 SwiftAddressBook.requestAccessWithCompletion({ (success, error) -> Void in
            if success {
                if let people = swiftAddressBook?.allPeople {
                    for person in people {
                        var phonenumber = String (person.phoneNumbers?.map({$0.value}))
                          print(phonenumber.characters.last)
                        if phonenumber.characters.first == "0" {
                           phonenumber = phonenumber.stringByReplacingCharactersInRange(phonenumber.startIndex..<phonenumber.startIndex.successor(), withString: "+33")
                        }

                        print(phonenumber)
                    }
                }
            }
            else {
              print("Fail")
            }
        })

好吧,首先,您应该调用swiftAddressBook.save()保存通讯簿的当前状态。 其次,您要更改一个本地字符串变量,该变量不会影响通讯簿状态。 似乎SwiftAddressBook仅在更改phoneNumbers数组时才会更改联系人。 这应该工作:

SwiftAddressBook.requestAccessWithCompletion({ (success, error) -> Void in
        if success {
            if let people = swiftAddressBook?.allPeople {
                for person in people {
                    if let phoneNumbers = person.phoneNumbers {
                        var phoneNumbersChanged = false
                        var newPhoneNumbers = [MultivalueEntry<String>]()

                        for var phonenumber in phoneNumbers {
                            if phonenumber.value.characters.first == "0" {
                                phonenumber.value = phonenumber.value.stringByReplacingCharactersInRange(phonenumber.value.startIndex..<phonenumber.value.startIndex.successor(), withString: "+33")
                                newPhoneNumbers.append(MultivalueEntry(value: phonenumber.value, label: phonenumber.label, id: phonenumber.id))
                                phoneNumbersChanged = true
                            } else {
                                newPhoneNumbers.append(phonenumber)
                            }

                            print(phonenumber.value)
                        }

                        if phoneNumbersChanged {
                            person.phoneNumbers = newPhoneNumbers
                        }
                    }
                }
                swiftAddressBook.save()
            }
        }
        else {
            print("Fail")
        }
    })

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM