这是创建联系人的功能
func createContacts() {
let newContact = CNMutableContact()
newContact.givenName = “Joshua’
newContact.familyName =“Serine”
let homeEmail = CNLabeledValue(label: CNLabelHome, value: "myhome@example.com" as NSString)
let workEmail = CNLabeledValue(label: CNLabelWork, value: "mywork@exapmle.com" as NSString)
newContact.emailAddresses = [homeEmail,workEmail]
let phoneNo = CNLabeledValue(label: CNLabelPhoneNumberMain, value: CNPhoneNumber(stringValue: “(613) 229-8876”))
newContact.phoneNumbers = [phoneNo]
let birthday = NSDateComponents()
birthday.day = 19
birthday.month = 9
birthday.year = 1990
newContact.birthday = birthday as DateComponents
let saveRequest = CNSaveRequest()
saveRequest.add(newContact, toContainerWithIdentifier: nil)
do {
try store.execute(saveRequest)
} catch {
print(“Error occuurred when updating contacts")
}
}
这是更新功能
func updateContact(){
print("Inside update contacts")
let predicate = CNContact.predicateForContacts(matchingName: “Serine”)
let keysToFetch = [CNContactGivenNameKey,CNContactFamilyNameKey,CNContactEmailAddressesKey]
let contacts :[CNContact] = try! store.unifiedContacts(matching: predicate, keysToFetch: keysToFetch as [CNKeyDescriptor] )
for contact in contacts{
let updatedContact = contact.mutableCopy() as! CNMutableContact
let newEmail:CNLabeledValue = CNLabeledValue(label: CNLabelHome, value: "anu@example.com" as NSString)
updatedContact.emailAddresses.append(newEmail)
let x = updatedContact.emailAddresses.remove(at: 0)
print(x)
let saveReq = CNSaveRequest()
saveReq.update(updatedContact)
do{
try store.execute(saveReq)
}
catch{
print("Cannot update as no contact")
}
}
现在, 无论我多少次调用这些函数,它都会将重复的值添加到联系人列表中而没有错误
我该怎么做才能避免这些重复的条目。