Core-Data 和 iCloud 限制每个实体的项目数 - 潜在的同步问题
Posted
技术标签:
【中文标题】Core-Data 和 iCloud 限制每个实体的项目数 - 潜在的同步问题【英文标题】:Core-Data & iCloud limit number of items per entity - Potential Sync issue 【发布时间】:2012-12-13 12:54:26 【问题描述】:我目前正在开发一个使用核心数据并希望使用 iCloud 的应用程序。我有一个问题 - 我的应用程序有一个配置文件实体,所有内容都属于它。
我想将此与 iCloud 同步,以便它也适用于他们的其他设备,例如 iPad。但是,我遇到了一个问题,并在以下场景中进行了描述:
场景 1
用户将他们的 iPhone 用于我的应用程序。创建一个配置文件并使用它一段时间。 然后他们得到一台 iPad,第一次在没有网络的情况下使用我的应用程序 - 该应用程序会提示他们创建个人资料。 (用户这样做并没有真正想到我已经这样做了)。然后他们第二天通过网络打开应用程序 - 他们现在是我的个人资料实体中的 2 个对象,有效地用于同一个人。
我将如何解决这种情况?以下是一些想法,但我有点困惑从哪里继续
选项 1 是检查他们是否已启用 iCloud - 并提示他们已启用 他们以前用过这个应用吗? 选项 2 观察配置文件对象并将两者合并在一起(风险 移动) 选项 3 不要使用 iCloud -(真的不想这样做)任何提示或想法都会很棒。
丹
【问题讨论】:
我不认为有一个明确的答案 - 这也是我与之抗争的问题 - 但我全神贯注...... 是的 - 我已经花了一段时间策划想法...... 【参考方案1】:您可以通过使用可用于核心数据的删除方法来避免在配置文件实体中插入重复记录。在配置文件实体中插入数据之前调用删除,这将删除重复条目并插入新条目。
【讨论】:
感谢您的回复。这 一些 记录的问题可能会在两者之间丢失。据我所知,您无法就 iCloud 合并发生的事情发表意见? 如何保留最近编辑的,以防出现重复?这肯定是用户想要坚持的。【参考方案2】:您真的希望能够处理 #2。除了您概述的情况之外,还有各种其他方式可能导致两台设备不同步。
也就是说,您可以在检测到两组竞争数据时,询问用户他们想要保留哪一组。不过这对用户很不利——人们通常不喜欢做出涉及破坏一堆新创建的数据的选择。
【讨论】:
谢谢。知道如何使用 iCloud 来处理这个问题吗? 您能否编写代码,当它看到两个配置文件实体时,根据需要逐个属性进行合并?还是创建一个 UI 让用户选择?以上是关于Core-Data 和 iCloud 限制每个实体的项目数 - 潜在的同步问题的主要内容,如果未能解决你的问题,请参考以下文章
IOS/objective-c/core-data:如何从相关实体获取属性
如何在 Mac 和 iPhone 之间同步 Core-Data 应用程序?