使用存储的JSON而不是Core Data

时间:2015-09-29 12:03:12

标签: android ios json core-data

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

我目前正在开发iOS(后来也是Android)应用程序,该应用程序从Web加载json对象并将其显示给用户。在我看来,在这种情况下,所有这些来自Core Data的映射都是一种开销,直接保存JSON对象并将它们用作" cache"在应用程序中。是否有库/记录方法如何实现获取json对象,在本地保存它们并使用预定义的标识符获取它们?

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

2 个答案:

答案 0 :(得分:0)

您只需使用NSURLCache缓存http响应,而不是保存JSON http://nshipster.com/nsurlcache/

答案 1 :(得分:0)

有很多方法可以实现这一点。您可以使用文件存储或数据库实现缓存,具体取决于复杂性和数据量。如果您正在使用文件,则只需存储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);

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