在iPhone中从JSON Web服务存储和获取缓存的数据

问题描述 投票:0回答:3

我正在寻找创建一个新闻的缓存管理器类,它也可以在其他iPhone项目中使用。我的缓存管理器将支持JSON数据的缓存,即文本和图像并将其本地存储在iPhone中。其背后的主要思想是使应用程序能够访问缓存的数据,从而减少网络活动。

我正在考虑通过以下方式实现此内容:

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

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

  3. Core-Data

我尝试使用此代码作为第二个解决方案:

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 

上面的代码怎么了?

因此,哪种存储方式更好,可以更好地存储缓存的数据,从而提高应用程序的性能和响应能力?尽管我乐于接受新想法,但是否还有上述以外的其他方法?

iphone sqlite ios4 core-data plist
3个回答
1
投票

最好,更强大,最容易实现的解决方案是第三个解决方案Core-Data。如果您想在未来的新功能开发方面获得最通用的应用程序,我的建议是根据此架构范例设计您的应用程序:

  1. 为要下载的内容定义一个数据库和具有托管对象的Core-Data访问。该数据库不仅是缓存,而且是应用程序的主要数据。

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

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

    我希望这对您有用

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

据我从斯坦福大学学到的。 CS193p视频讲座,您几乎应该永远不要在应用程序中使用SQLite。核心数据有些复杂,但是如果您的数据具有复杂的图形,那就更好了。我认为使用属性列表(plist)会更好:)

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


0
投票

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


0
投票

据我从斯坦福大学学到的。 CS193p视频讲座,您几乎应该永远不要在应用程序中使用SQLite。核心数据有些复杂,但是如果您的数据具有复杂的图形,那就更好了。我认为使用属性列表(plist)会更好:)

© www.soinside.com 2019 - 2024. All rights reserved.