Swift 删除联系人后,由于iCloud,联系人记录将重新显示?
在真实设备上测试contact框架时,我观察到了以下行为(但在模拟器上测试时,我从未观察到同样的问题) 当我使用以下代码将所有联系人分组以进行删除时Swift 删除联系人后,由于iCloud,联系人记录将重新显示?,swift,icloud,cncontact,Swift,Icloud,Cncontact,在真实设备上测试contact框架时,我观察到了以下行为(但在模拟器上测试时,我从未观察到同样的问题) 当我使用以下代码将所有联系人分组以进行删除时 do { let allContainers = try store.containers(matching: nil) let keysToFetch = [CNContactIdentifierKey] as [CNKeyDescriptor] for container in allContainers { N
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 sync,则症状将不存在。所以我猜这和iCloud同步有关
所以问题是,有没有可能要求iCloud实现本地删除操作,从而不通过恢复这些触点来覆盖本地删除