【问题标题】:use stored JSON instead of Core Data使用存储的 JSON 而不是 Core Data
【发布时间】:2015-09-29 12:03:12
【问题描述】:

有很多教程描述了如何从 Web 获取 JSON 对象并将它们映射到 Core Data。

我目前正在开发一个 iOS(后来也包括 Android)应用程序,该应用程序从 Web 加载 json 对象并将它们显示给用户。在我看来,在这种情况下,与 Core Data 之间的所有映射都是开销,直接保存 JSON 对象并将它们用作应用程序中的“缓存”会容易得多。是否有库/文档化的方法来实现获取 json 对象、将它们保存在本地并使用预定义的标识符获取它们?

我很想获取例如10 个对象,将它们展示给用户并在本地保存数据。下次用户在该列表上时,将显示本地数据,并在后台再次获取 json 文件以保持最新状态。我想这是一个常见的用例,但我没有找到任何教程/框架可以完全实现这一点。

【问题讨论】:

  • 我知道这不完全是你的问题,但看看realm.io,它可能是一个不错的选择。真正易于使用和跨平台。而且速度很快。

标签: android ios json core-data


【解决方案1】:

您可以简单地使用 NSURLCache 来缓存 http 响应而不是保存 JSON http://nshipster.com/nsurlcache/

【讨论】:

    【解决方案2】:

    有很多方法可以实现这一点。您可以根据数据的复杂性和数量使用文件存储或数据库来实现缓存。如果您正在使用文件,您只需要存储 JSON 响应并在创建活动/片段时加载它。我有时所做的是以字符串的形式将 JSON 响应存储在文件中,然后在活动/片段加载时检索它。下面是一个读写字符串文件的例子:

    编写文件:

    FileOutputStream outputStream = context.openFileOutput("myfilename",Context.MODE_PRIVATE);
            String stringToBeSaved = myJSONObject.toString();
            outputStream.write(stringToBeSaved.getBytes());
    

    从文件中读取

     FileInputStream inputStream= context.openFileInput("myfilename");
            int c;
            String temp="";
            while( (c = inputStream.read()) != -1){
                temp = temp + Character.toString((char)c);
    

    您可以使用以下方法将此字符串转换为 JSONObject:

    JSONObject jsonObject = new JSONObject(temp);
    

    或者你可以根据需要使用字符串。

    【讨论】:

      猜你喜欢
      • 2011-07-18
      • 2012-03-21
      • 2014-05-07
      • 1970-01-01
      • 2018-09-17
      • 1970-01-01
      • 2011-04-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多