微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

删除联系人后,联系人记录会因为iCloud重新出现吗?

如何解决删除联系人后,联系人记录会因为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 举报,一经查实,本站将立刻删除。