美文网首页
EFFMDBTool示例(1)-基于BaseDataModel的

EFFMDBTool示例(1)-基于BaseDataModel的

作者: fredericoyang | 来源:发表于2021-05-24 18:02 被阅读0次

基于BaseDataModel的模型在sqlite中存入与取出 Write or read model based on BaseDataModel with sqlite

极致框架中的 EFFMDBTool可以非常简单方便的进行这一操作。只需要你采用基于BaseDataModel的模型即可。

@interface ContactModel : BaseDataModel

@end

@protocol ContactModel <NSObject>

@end

@interface UserModel : BaseDataModel

@property (copy, nonatomic, nullable) NSString<Optional> *name;
@property (strong, nonatomic, nullable) NSArray<ContactModel, Optional> *contacts;

@end


@implementation ContactModel

+(JSONKeyMapper*)keyMapper
{
    return [[JSONKeyMapper alloc] initWithModelToJSONDictionary:@{
        @"dataID": @"ID",     // dataID用作ID
      @"dataName": @"data"    // dataName用作data
    }];
}

@end

@implementation UserModel

+(JSONKeyMapper*)keyMapper
{
    return [[JSONKeyMapper alloc] initWithModelToJSONDictionary:@{
        @"dataID": @"ID",     // dataID用作ID
      @"dataName": @"nick"    // dataName用作name
    }];
}

@end
{% endcodeblock %}
<!--more-->

{% codeblock lang:objc %}
// Test
NSArray *array = @[@{@"ID": @57,
                   @"name": [NSNull null],
                   @"nick": @"Tony",
               @"contacts": @[@{@"ID": @1,
                              @"data": @"example@mail.com"},
                              @{@"ID": @2,
                              @"data": @"136xxxxxxxx"},
                              @{@"ID": @3,
                              @"data": @"xx省xx市xx街道xx号"}]},
                   @{@"ID": @58,
                   @"name": @"Ming Wang",
                   @"nick": @"Jim",
               @"contacts": @[@{@"ID": @1,
                              @"data": @"example@mail.com"},
                              @{@"ID": @2,
                              @"data": @"136xxxxxxxx"},
                              @{@"ID": @3,
                              @"data": @"xx省xx市xx街道xx号"}]},
                   @{@"ID": @59,
                   @"name": @"Li Yang",
                   @"nick": @"Sam",
               @"contacts": @[@{@"ID": @1,
                              @"data": @"example@mail.com"},
                              @{@"ID": @2,
                              @"data": @"136xxxxxxxx"},
                              @{@"ID": @3,
                              @"data": @"xx省xx市xx街道xx号"}]}];

if ([MDB_TOOL canOpen_mdb] && ![MDB_TOOL tableExistsWithModel:[UserModel class]]) {
    for (NSDictionary *dictionary in array) {
        NSError *error;
        UserModel *model = [[UserModel alloc] initWithDictionary:dictionary error:&error];
        if (model) {
            [MDB_TOOL parserSQL:model finish:nil]; // 存入 UserModel
        }
    }
    [MDB_TOOL close_mdb];
    LOG_FORMAT(@"[******]Write to database success.[******]");
} else {
    if ([MDB_TOOL canOpen_mdb]) {
        [MDB_TOOL parserModel:[UserModel class] finish:^(NSArray *_Nonnull model_array) { // 一次性取出所有的 UserModel
            LOG_FORMAT(@"User models: %@", model_array);
        }];
    }
    [MDB_TOOL close_mdb];
    LOG_FORMAT(@"[******]Read from database success.[******]");
}

相关

  • 详见极致框架官网EFFMDBTool/EFFMDBTool.h的介绍。通过极致框架官网顶部的搜索功能搜索 EFFMDBTool。

许可

  • 本文采用 BY-NC-SA 许可协议。即:署名——转载请注明出处;非商业使用;相同方式传播——再分发的文章许可与原文相同。

查看原文

相关文章

网友评论

      本文标题:EFFMDBTool示例(1)-基于BaseDataModel的

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