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

时间:2016-01-19 18:13:01

标签: ios swift

我试图让所有用户联系,看看他们是否已经在后端烧坏了。我首先尝试使用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")
            }
        })

1 个答案:

答案 0 :(得分:0)

首先,您应该调用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")
        }
    })