iOS 使用levelDB储存本地数据

对于移动端应用,很多时候需要保存本地数据,目的有很多,例如缓存数据,例如保存本地设置属性,例如保存闪退之前的数据和状态。

做数据本地缓存一般需要实现一下几个逻辑方法(当然,命名随意,意思到了即可)

- (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。

关于单例模式,是设计模式的一种,研究好以后,必须写一个新的笔记。因为单例模式十分有用。

你可能感兴趣的:(移动,应用,ios开发,leveldb)