【问题标题】:storing feed stream items NSObject in disk or as JSON将提要流项目 NSObject 存储在磁盘中或作为 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 文件更好吗?

【问题讨论】:

    标签: iphone objective-c ios json ipad


    【解决方案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 的替代方案吗?
    猜你喜欢
    • 1970-01-01
    • 2012-12-14
    • 2012-01-20
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-05
    相关资源
    最近更新 更多