Ios 用于本地存储和显示服务器临时数据的核心数据-最佳设计是什么
我对核心数据还是新手,所以请原谅这个问题 我正在开发一个应用程序,让人们可以“挑战”自己和他人。我需要在本地存储用户已经接受的挑战,以便他可以脱机浏览他们的详细信息。但是,当应用程序在线时,我会请求服务器显示可用的挑战、已接受挑战的新细节等。因此需要一些同步,但我会尽量将其保持在最低限度 现在我的问题是如何构建数据。我应该: (1) 仅为存储在设备上的数据提供核心数据模型;然后只为从服务器解析的挑战构建模型类,并在我的表视图中显示一个挑战对象数组 (2) 两者都有一个单一的核心数据模型,但如何区分局部挑战和暂时挑战 (3) 是否有两个持久性存储,每种用途一个 选项2和3显然具有使用NSFetchedResultsController的优势,但编码和维护可能更复杂 至于同步问题,我应该: (4) 保留上次更新每个本地挑战的时间戳,并将这些时间戳与服务器上的时间戳相匹配,以查看是否需要将新的详细信息推送到服务器 (5) 保存一组密钥路径和更改,然后在internet连接再次可用时将其推送到服务器 解决这两个问题的最佳方法是什么Ios 用于本地存储和显示服务器临时数据的核心数据-最佳设计是什么,ios,core-data,storage,Ios,Core Data,Storage,我对核心数据还是新手,所以请原谅这个问题 我正在开发一个应用程序,让人们可以“挑战”自己和他人。我需要在本地存储用户已经接受的挑战,以便他可以脱机浏览他们的详细信息。但是,当应用程序在线时,我会请求服务器显示可用的挑战、已接受挑战的新细节等。因此需要一些同步,但我会尽量将其保持在最低限度 现在我的问题是如何构建数据。我应该: (1) 仅为存储在设备上的数据提供核心数据模型;然后只为从服务器解析的挑战构建模型类,并在我的表视图中显示一个挑战对象数组 (2) 两者都有一个单一的核心数据模型,但如何区
非常感谢 因为这是一个设计问题,设计是一门艺术,从某种意义上说,总是有不止一种方法,所以我可能会这样做 我将创建一个模型来存储本地和可用的挑战,并通过一些属性来区分它们。当没有网络连接时,我可能会选择过滤掉所有远程挑战,而不显示缓存的(或您所说的暂时的)挑战。当连接恢复或同步发生时,我会检查是否需要在服务器或本地更新任何挑战 时间戳是检查实体修改时间的好方法。如果需要逐属性比较以解决冲突,可以使用校验和(如crc32或md5哈希)来加速二进制数据的比较(如果有的话) 即使使用时间戳,也可能触摸到对象,但保存的值实际上保持不变,因此校验和可用于检测是否对对象进行了实际更改。您可以使用NSKeyedArchiver将对象序列化为NSData并计算其校验和。我发现这种方法是可靠的。可能重复