ios - 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)
}
解决方案
创建一个新的联系人存储
你不能。整个概念毫无意义。这就是它失败的原因。您可以保存到的任何商店都必须已经存在。除了默认存储 nil 之外,您应该没有理由使用任何标识符。
推荐阅读
- php - 无法执行 Laravel-Blade 文件
- hyperlink - 如何根据项目在 Y 轴上定位元素 [SAPUI5]
- java - 我无法在我的代码中打印出字母?如果我从圆括号中删除 0 代码将不会运行
- node.js - 如何删除不活动的快速会话?
- vb.net - 在 Visual Basic 应用程序中运行批处理作业时无法识别 git
- python - 乘以一个多维数组
- python - PyInstaller + subprocess.check_output + Windows 计划任务
- docker - 如何在调试中在停止事件时运行任务?
- python - 使用计算修改 xarray 列
- spring - Spring Integration DSL如何将拆分消息路由到不同的并发流?