在iOS中,可以为电话号码和电子邮件地址创建自定义标签。有没有办法以编程方式删除这些创建的标签(使用CNContacts或ABAddressBook)? 换句话说:我不想从联系人中删除自定义标签,我想从系统中删除“自定义标签”,因此当有人调出可用的可用列表时,它根本不会显示。
附加iOS 9源代码,在电子书中使用电子邮件字段中的自定义标签创建联系人。
func createContact() {
let contactStore = CNContactStore()
let newContact = CNMutableContact()
newContact.givenName = "Chris"
newContact.familyName = "Last"
let homeEmail = CNLabeledValue(label: "RandomLabel", value: "IGotAnEmail@Address.com")
newContact.emailAddresses = [homeEmail]
do {
let saveRequest = CNSaveRequest()
saveRequest.addContact(newContact, toContainerWithIdentifier: nil)
try contactStore.executeSaveRequest(saveRequest)
}
catch {
NSLog("Save failed")
}
}
答案 0 :(得分:0)
联系框架+ deleteContact
This可能会对您有所帮助。
编辑:我在美好的一天:NSOperationQueue().addOperationWithBlock{[unowned store] in
let predicate = CNContact.predicateForContactsMatchingName("john")
let toFetch = [CNContactEmailAddressesKey]
do{
let contacts = try store.unifiedContactsMatchingPredicate(predicate,
keysToFetch: toFetch)
guard contacts.count > 0 else{
print("No contacts found")
return
}
//only do this to the first contact matching our criteria
guard let contact = contacts.first else{
return
}
let req = CNSaveRequest()
let mutableContact = contact.mutableCopy() as! CNMutableContact
req.deleteContact(mutableContact)
do{
try store.executeSaveRequest(req)
print("Successfully deleted the user")
} catch let e{
print("Error = \(e)")
}
} catch let err{
print(err)
}
}
编辑:看来你可以,但你需要做这样的批处理功能:
希望它可以帮到你
编辑2:嗯,ABAddressBook已被弃用,你需要对New contact framework做同样的事情......玩得开心!!