swift - 删除联系人后,由于iCloud,联系人记录会重新出现吗?
问题描述
我在真实设备上测试联系人框架时观察到以下行为(尽管在模拟器上测试时我从未观察到同样的问题)。
当我使用以下代码将所有联系人分组以进行删除时
do {
let allContainers = try store.containers(matching: nil)
let keysToFetch = [CNContactIdentifierKey] as [CNKeyDescriptor]
for container in allContainers {
NSLog("Iterating container with name \(container.name) and id \(container.identifier)")
let fetchPredicate = CNContact.predicateForContactsInContainer(withIdentifier: container.identifier)
let containerContacts = try store.unifiedContacts(matching: fetchPredicate,
keysToFetch: keysToFetch)
for contact in containerContacts {
if let mutableContact = contact.mutableCopy() as? CNMutableContact {
request.delete(mutableContact)
}
}
}
try CNContactStore().execute(request)
} catch {
NSLog("Failed to remove contacts due to \(error)")
}
我注意到代码最初运行良好,联系人最初会消失,但 1-2 分钟后,联系人会重新出现在我的 iPhone 上。这不是 100% 可重现的,但 50% 的时间是可重现的。如果我禁用联系人的 iCloud 同步,则症状将不存在。所以我想这与 iCloud 同步有关。
那么问题来了,是否可以让iCloud实现本地删除操作,从而不通过恢复这些联系人来覆盖本地删除呢?
解决方案
推荐阅读
- python - 细胞的条件存在
- markdown - 在 Next.js 中使用 PrismJS 并在 markdown 中突出显示代码
- python - 用于 Postgres 的 Python 中 jsonb 数组的正确格式是什么?
- javascript - 如何声明一个函数,该函数将接受一个带参数的函数,而其参数中没有参数?
- visual-studio-code - 如何让不同的快捷方式在vscode中打开不同的工作区
- python - DeepCom 通过谷歌云训练模型(seq2 seq 模型):../config/default.yaml 错误
- javascript - 验证是否在 php 上输入了电子邮件
- python - 为复杂的数学表达式绘制二叉树
- javascript - 如何访问这些嵌套数据?
- python - 用python包解析国际地址