对于移动端应用,很多时候需要保存本地数据,目的有很多,例如缓存数据,例如保存本地设置属性,例如保存闪退之前的数据和状态。
做数据本地缓存一般需要实现一下几个逻辑方法(当然,命名随意,意思到了即可)
- (BOOL)hadCache;
- (NSArray*)getCache;
- (void)clearCache;
- (void)setCache:(NSArray*)array;
具体实现可以像下面的伪代码:
- (BOOL)hadCache
{
NSArray* array = [self getCache];
if([array count]!=0)
return YES;
else
return NO;
}
- (NSArray*)getCache
{
NSData* data = [[[ShareUserDBManager sharedInstance] db] objectForKey:KEY_CACHE_...];
if (data == nil){
return nil;
}
//做一下data的解析,例如转换成为protobuffer的对象,例如转化成为OC的对象,等等
// …
return friendList;
}
- (void)clearShareToFriendsCache
{
[[[ShareUserDBManager sharedInstance]db]removeKey:KEY_CACHE_SHARE_TO_FRIEND];
}
- (void)setCache:(NSArray*)array
{
if([array count] == 0)
return;
//做一下data的创建,例如从protobuffer的对象转化为NSData,等等
// …
NSData* data = [array ...];
if(data == nil)
return;
[[[ShareUserDBManager sharedInstance] db] setObject:data forKey:KEY_CACHE_...];
}
需要注意的是KEY在全局应该是唯一的,否则在leveldb寻找key的时候会有错。
实现好了几种逻辑方法之后,在可以利用一个全局的单例(通常是什么什么Manager,例如管理一个本地账户,就实现一个UserManager,然后弄一个sharedInstance,使得全局通用),在该实现缓存的地方使用set,在该读取缓存的时候使用get,在不需要缓存的地方clear。
关于单例模式,是设计模式的一种,研究好以后,必须写一个新的笔记。因为单例模式十分有用。