首页 > 解决方案 > 删除联系人后,由于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实现本地删除操作,从而不通过恢复这些联系人来覆盖本地删除呢?

标签: swifticloudcncontact

解决方案


推荐阅读