我希望为新闻创建缓存管理器类,也可以在其他iPhone项目中使用。我的缓存管理器将支持缓存JSON数据,即 Text&图片&将其存储在iPhone本地。这背后的主要思想是使应用程序能够访问缓存的数据,从而减少网络活动。
我正在考虑通过以下方式实现这一点:
Sqlite数据库即获取所有数据&存储
将此数据添加到某个.plist文件
核心数据
我尝试使用此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
以上代码有什么问题??
那么,任何人都可以指导我哪个更好的存储缓存数据的方式期待性能&应用程序的响应性?虽然我对新想法持开放态度,但除了上述之外还有其他方法吗?
提前致谢,
答案 0 :(得分:1)
最好,最有能力和最容易实施的解决方案是第三个,核心数据。如果你想在未来的新功能开发方面获得最多功能的应用程序,我建议我根据这个架构范例设计你的应用程序:
使用托管对象为要下载的内容定义数据库和核心数据访问。此数据库不仅是缓存,还是应用程序的主要数据。
通过UIFetchedResultsController构建基于核心数据库的应用程序,并在所有viewController中访问数据。基于fetchedViewController委托方法实现轻松刷新视图。
构建独立于应用程序其余部分的后台功能,从Internet下载内容并将其存储在Core-Data中。视图将自动刷新,而无需您作为开发人员的更多努力。
我希望这对你有用
答案 1 :(得分:0)
不是自己构建,而是因为它是一个非常复杂的问题,为什么不使用像RestKit这样的东西?
答案 2 :(得分:0)
正如我从斯坦福大学那里学到的。 CS193p视频讲座你几乎不应该在你的应用程序中使用SQLite。核心数据有点复杂,但如果您的数据有一个复杂的图表将是更好的。我认为使用属性列表(plist)会更好:)
注意:我使用NSUserDefaults来保存JSON数据并在以后的不同类中使用,this链接中也有缓存方法。