美文网首页
【开发工具】YTKKeyValueStore 键值存储--存储自

【开发工具】YTKKeyValueStore 键值存储--存储自

作者: 小子爱搞事 | 来源:发表于2017-02-24 13:09 被阅读331次

1,使用 'MJExtension' 处理字典和模型。

注意:自定义类型中包含自定义类型,需要实现 + (NSDictionary *)mj_objectClassInArray 方法
@class Person;
@interface Group : NSObject
@property (nonatomic, strong) NSString *groupName;
@property (nonatomic, strong) NSArray<Person *> *members;
@property (nonatomic, strong) NSArray<Person *> *teachers;
@end

@implementation Group
+ (NSDictionary *)mj_objectClassInArray{
    return @{
             @"members": @"Person",
             @"teachers": [Person class]
             };
}
@end

2,YTKKeyValueStore 可以对系统类型的数据进行存储,对于自定义类型,将自定义类型处理成Json数据再进行存储即可。

#import <Foundation/Foundation.h>
#import "YTKKeyValueStore.h"

@interface YTKKeyValueStore (CustomObject)

/******** 自定义类型相关 *********************************************************/
/** 存储自定义类型 */
- (void)putCustomObject:(id)object
                 withId:(NSString *)objectId
              intoTable:(NSString *)tableName;

/** 存储包含自定义类型的数组 */
- (void)putArrWithCustomClass:(Class)aclass
                       object:(id)object
                       withId:(NSString *)objectId
                    intoTable:(NSString *)tableName;

/** 获取自定义类型的对象方法 */
- (id)getCustomClass:(Class)aclass
          objectById:(NSString *)objectId
           fromTable:(NSString *)tableName;

@end

@interface AGKeyValueManage : NSObject

+ (void)storeWithDBName:(NSString *)dbName tableName:(NSString *)tableName handle:(void (^)(YTKKeyValueStore *store, NSString *tableName))handle;

@end
#import "AGKeyValueManage.h"
#import "MJExtension.h"

@implementation YTKKeyValueStore (CustomObject)

- (void)putCustomObject:(id)object withId:(NSString *)objectId intoTable:(NSString *)tableName{
    NSDictionary *dic = [object mj_keyValues];
    [self putObject:dic withId:objectId intoTable:tableName];
}

/**
    将包含自定义对象的数组转成包含
 */
- (void)putArrWithCustomClass:(Class)aclass object:(id)object withId:(NSString *)objectId intoTable:(NSString *)tableName{
    NSArray *dicArr = [aclass mj_keyValuesArrayWithObjectArray:object];
    [self putObject:dicArr withId:objectId intoTable:tableName];
}

- (id)getCustomClass:(Class)aclass objectById:(NSString *)objectId fromTable:(NSString *)tableName{
    id object = [self getObjectById:objectId fromTable:tableName];
    id result;
    if ([object isKindOfClass:[NSArray class]]) {
        result = [aclass mj_objectArrayWithKeyValuesArray:object];
    }
    else{
        result = [aclass mj_objectWithKeyValues:object];
    }
    return result;
}
@end

@implementation AGKeyValueManage

+ (void)storeWithDBName:(NSString *)dbName tableName:(NSString *)tableName handle:(void (^)(YTKKeyValueStore *store, NSString *tableName))handle{
    if (!handle) {
        return;
    }
    YTKKeyValueStore *store = [[YTKKeyValueStore alloc] initDBWithName:dbName];
    [store createTableWithName:tableName];
    handle(store, tableName);
}
@end

相关文章

  • 【开发工具】YTKKeyValueStore 键值存储--存储自

    1,使用 'MJExtension' 处理字典和模型。 注意:自定义类型中包含自定义类型,需要实现 + (NSDi...

  • iOS 其他第三方框架

    缓存处理 YTKKeyValueStore - Key-Value存储工具类,说明。TMCache - TMCac...

  • iOS常用第三方集合(五)

    缓存处理 YTKKeyValueStore- Key-Value存储工具类,说明。TMCache- TMCache...

  • iOS 其他第三方框架

    iOS 其他第三方框架 缓存处理 YTKKeyValueStore - Key-Value存储工具类,说明。 TM...

  • SharedPerferences存储

    SharedPerferences存储 SharedPreferences是使用键值对的方式来存储数据的,Shar...

  • 【JAVA】集合框架

    集合框架 Collection 集合 -- 存储元素集合 Map 图 -- 存储键值对数据 Collectio...

  • 34NoSQL

    NoSQL数据库四大家族列存储 Hbase键值存储 Redis图像存储 Neo4J文档存储 Mo...

  • JavaSE中的容器

    概述:容器包括Collection和Map。Collection存储对象,Map存储键值对。 一. Collect...

  • 2017 11-15 redis应用

    一.redis介绍 (1)概念:属于非关系型存储数据库——基于kv(键值存储)的开源的内存存储,数据库结构存储。经...

  • List 和 Map 区别

    List:是存储单列数据的集合,存储的数据是有序并且是可以重复的 Map:存储双列数据的集合,通过键值对存储数据,...

网友评论

      本文标题:【开发工具】YTKKeyValueStore 键值存储--存储自

      本文链接:https://www.haomeiwen.com/subject/wehwwttx.html