将提要流项目 NSObject 存储在磁盘中或作为 JSON
Posted
技术标签:
【中文标题】将提要流项目 NSObject 存储在磁盘中或作为 JSON【英文标题】:storing feed stream items NSObject in disk or as JSON 【发布时间】:2012-07-14 15:28:05 【问题描述】:所以我正在实现一个提要/时间线类型的应用程序。基本上,当您最初打开应用程序时,它会进入内存,然后使用该数据立即返回,而在后台它正在从服务器获取更新的数据。问题是,到目前为止,我将响应存储为原始 JSON 文件。现在,当我从服务器以 JSON 形式取回新数据时,基本上我需要将此 JSON 与旧数据附加/合并,然后再将其保存回磁盘。这很痛苦,因为我不知道如何合并两个 JSON?有没有可能,如果可以怎么办?
JSON格式如下:
"data":
"last_updated": 1342277036,
"stream": [
"action":
,
"to": [
],
"from": [
],
"timestamp": 1342276421
,
"action":
,
"to": [
],
"from": [
],
"timestamp": 1342276421
,
"action":
,
"to": [
],
"from": [
],
"timestamp": 1342276421
,
如果这不是一个好方法。那么将 NSObject 保存到磁盘而不是原始 JSON 文件更好吗?
【问题讨论】:
【参考方案1】:您应该使用自己的 ObjC 对象对数据进行建模,而不是合并 JSON 对象。
查看您的 JSON 数据,您的流似乎包含“动作”、到/从和时间。
所以你应该创建一个代表该数据的类。
然后,当您下载 JSON 时,您应该解析它并根据收到的数据创建操作对象。
然后您可以使用诸如 Core Data 之类的框架来处理您的持久性。 Core Data 是一个对象模型图,可以有数据库支持,你可以使用 Core Data 来查询数据库。
这将允许您执行诸如“获取自此时间戳以来的所有操作对象”和“将所有这些新对象保存到数据库”之类的操作。
查看Core Data programming guide。
【讨论】:
是的,我知道 Core Data。我不使用它的原因是因为提要会发生很大变化,所以我不想将它存储在核心数据中 我不确定我是否理解你的推理。 Core Data 是一个非常高效的框架,能够处理变化很大的提要。 那么核心数据存储的 NSObject 是 self 对吗?我实际上有 NSObject 的子类来映射来自这些 JSON 的数据。我有点困惑的是,如果我有 3 个不同的提要流,那么如何将它们存储在核心数据中? 听起来你需要学习一些面向对象的编程原理。您可以创建一个抽象基类,对每个流共有的对象的基本方面进行建模,然后创建基类的子类以实现每个流的特定功能。您可以在 Core Data 中拥有使用每个流特定子类的单独实体。 如果我想走这条路,你能提供一个关于如何附加 JSON 的替代方案吗?以上是关于将提要流项目 NSObject 存储在磁盘中或作为 JSON的主要内容,如果未能解决你的问题,请参考以下文章
Azure VM 使用 D: 盘作为 Windows VM 上的数据驱动器