之前对ios缓存机制不了解,期间走了很多弯路。以至于在原来公司的第一个项目没有能够提供缓存机制。全部数据都是实时的网络数据。后来经过自己向周围有经验的ios开发人员请教,了解到NSCoder类,以及NSCoding协议。
原来的思路是把本地下载下来的数据写道sqllite数据库中,但是以后用的时间没有办法确定写在数据库中的文件在界面上应该显示的位置。被这个问题纠结了好长时间。周围ios开发人员对缓存又不太熟悉。直到来到现在的公司才有合适的人给解决了这个问题。其实思路并不是很难。
1.首先,对下载下来的数据(json或xml)经过自己的解析,一般是存为NSArray或者NSDictionary的数据源对象。其中数据源中的每个对象(model)都要实现NSCoding协议。
Example:我们的项目中有一个表示活动的model类。其中有getter和setter方法,代码就不贴出来了。其中有userid,activityid,messageCount,memberCount等属性。在实现NSCodeing协议后。有两个协议方法要在model类中实现。代码如下:
#pragma mark – NSCoding
//keyfor value的key 不贴出
- (void)encodeWithCoder:(NSCoder*)aCoder {
[aCoder encodeInt64:self.userIdforKey:1];
[aCoder encodeInt64:self.activityidforKey:2];
[aCoder encodeInteger: