首页 > 解决方案 > iOS Contacts Framework - 如何保存/创建新的联系人存储

问题描述

我希望以编程方式创建一个新的联系人存储并在 Swift 中将联系人保存到其中。

尝试保存联系人并使用 时toContainerWithIdentifier:,我已将字符串值传递给容器标识符,但是我收到以下错误:

线程 1:致命错误:“尝试!” 表达式意外引发错误:错误域 = CNErrorDomain 代码 = 200“更新的记录不存在” UserInfo = {CNInvalidRecordIdentifiers =(本地),NSLocalizedDescription =更新的记录不存在,NSLocalizedFailureReason =保存请求失败,因为它更新了不存在的记录不存在或已被删除。}

如果我使用此代码toContainerWithIdentifier:nil,联系人将正确保存在默认存储中,因此我知道我的保存代码没有问题。

这是一个与按钮相关的非常基本的测试。如果我使用其他任何东西而toContainerWithIdentifier不是nil我得到错误。

    @IBAction func testAdd(_ sender: UIButton) {
    contact.givenName = "John"
    contact.familyName = "Appleseed"
    let store = CNContactStore()
    let saveRequest = CNSaveRequest()
    saveRequest.add(contact, toContainerWithIdentifier:nil)
    try! store.execute(saveRequest)
}

标签: iosswiftcontacts

解决方案


创建一个新的联系人存储

你不能。整个概念毫无意义。这就是它失败的原因。您可以保存到的任何商店都必须已经存在。除了默认存储 nil 之外,您应该没有理由使用任何标识符。


推荐阅读