0%

EFFMDBTool示例(1)-基于BaseDataModel的模型在sqlite中存入与取出

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
@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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// 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.[******]");
}

相关