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