存储&从iPhone中的JSON webservice获取缓存数据?

时间:2012-02-01 09:49:59

标签: iphone sqlite ios4 core-data plist

我希望为新闻创建缓存管理器类,也可以在其他iPhone项目中使用。我的缓存管理器将支持缓存JSON数据,即 Text&图片&将其存储在iPhone本地。这背后的主要思想是使应用程序能够访问缓存的数据,从而减少网络活动。

我正在考虑通过以下方式实现这一点:

  1. Sqlite数据库即获取所有数据&存储

  2. 将此数据添加到某个.plist文件

  3. 核心数据

  4. 我尝试使用此Code for Second Solution:

    NSString *plistPath = [self Return_PlistPathCreation]; // Method to creat the JSON file locaally under Documents
    
        NSMutableDictionary *dict = [[NSMutableDictionary alloc]init];
        [dict setValue:newsArray forKey:@"homenews"]; //newsArray is the array containing objects parsed from the JSON webservice 
         NSLog(@"JSON representation for dictionary is %@",[dict JSONRepresentation]); //it prints perfectly
    
        [[dict JSONRepresentation] writeToFile:plistPath atomically:YES encoding:NSASCIIStringEncoding error:nil]; //Not not able to write it within the file 
    

    以上代码有什么问题??

    那么,任何人都可以指导我哪个更好的存储缓存数据的方式期待性能&应用程序的响应性?虽然我对新想法持开放态度,但除了上述之外还有其他方法吗?

    提前致谢,

3 个答案:

答案 0 :(得分:1)

最好,最有能力和最容易实施的解决方案是第三个,核心数据。如果你想在未来的新功能开发方面获得最多功能的应用程序,我建议我根据这个架构范例设计你的应用程序:

  1. 使用托管对象为要下载的内容定义数据库和核心数据访问。此数据库不仅是缓存,还是应用程序的主要数据。

  2. 通过UIFetchedResultsController构建基于核心数据库的应用程序,并在所有viewController中访问数据。基于fetchedViewController委托方法实现轻松刷新视图。

  3. 构建独立于应用程序其余部分的后台功能,从Internet下载内容并将其存储在Core-Data中。视图将自动刷新,而无需您作为开发人员的更多努力。

  4. 我希望这对你有用

答案 1 :(得分:0)

不是自己构建,而是因为它是一个非常复杂的问题,为什么不使用像RestKit这样的东西?

答案 2 :(得分:0)

正如我从斯坦福大学那里学到的。 CS193p视频讲座你几乎不应该在你的应用程序中使用SQLite。核心数据有点复杂,但如果您的数据有一个复杂的图表将是更好的。我认为使用属性列表(plist)会更好:)

注意:我使用NSUserDefaults来保存JSON数据并在以后的不同类中使用,this链接中也有缓存方法。