如何解决删除联系人后,联系人记录会因为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实现本地删除操作,从而不通过恢复这些联系人来覆盖本地删除?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。