以编程方式删除自定义电话标签

时间:2015-10-05 13:03:45

标签: ios iphone abaddressbook cncontact

在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")
    }
}

1 个答案:

答案 0 :(得分:0)

联系框架+ deleteContact

This可能会对您有所帮助。

使用this function

编辑:我在美好的一天:

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)
  }
}

编辑:看来你可以,但你需要做这样的批处理功能:

  • 使用AddressBook / ABAddressBookCopyArrayOfAllPeople
  • 获取联系人
  • 用于......进入联系人
  • 获取ABRecordCopyValue以获取所需的ABMultiValueRef
    • kABPersonEmailProperty
    • kABPersonAddressProperty
    • kABPersonPhoneProperty
  • 因为...进入他们
  • 使用ABMultiValueCopyLabelAtIndex
  • 获取最新信息
  • 将其与默认标签(注意here to get the default one
  • 进行比较
  • 如果不匹配,请将其删除

希望它可以帮到你

编辑2:嗯,ABAddressBook已被弃用,你需要对New contact framework做同样的事情......玩得开心!!