Sqlite封裝10 - 數(shù)組/字典處理 -

Snip20170803_162.png

本節(jié)主要講 數(shù)組和字典的 存取,通過data和string的轉(zhuǎn)換來達(dá)到目的。

SqliteTool:執(zhí)行多條sql語句的方法有些問題

Snip20170803_167.png

SqliteModelTool:

+ (BOOL)updateTable:(Class)cls uid:(NSString *)uid有幾處問題要修正:

Snip20170803_172.png

+ (BOOL)saveOrUpdateModel:(id)model uid:(NSString *)uid
1、要考慮到表更新失?。?/p>

if ([self isTableRequiredUpdate:cls uid:uid]) {
       BOOL updateSuccess = [self updateTable:cls uid:uid];
        if (!updateSuccess) {
            NSLog(@"更新數(shù)據(jù)庫表結(jié)構(gòu)失敗");
            return NO;
        }
    }

2、保存的時候,字典或數(shù)組轉(zhuǎn)換成NSData,再轉(zhuǎn)成字符串

if ([value isKindOfClass:[NSArray class]] || [value isKindOfClass:[NSDictionary class]]) {
    // 在這里, 把字典或者數(shù)組, 處理成為一個字符串, 保存到數(shù)據(jù)庫里面去
            
    // 字典/數(shù)組 -> data
    NSData *data = [NSJSONSerialization dataWithJSONObject:value options:NSJSONWritingPrettyPrinted error:nil];
            
    // data -> nsstring
    value = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}

3、解析的時候,如果類型是數(shù)組或字典,則轉(zhuǎn)成NSData,再轉(zhuǎn)成字典或數(shù)組

3.1 從模型中獲取 字段和類型的 映射表:

NSDictionary *nameTypeDic = [XMGModelTool classIvarNameTypeDic:cls];

3.2 字符串-->data-->數(shù)組、字典

[modelDic enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {
    
    NSString *type = nameTypeDic[key];

    id resultValue = obj;
    if ([type isEqualToString:@"NSArray"] || [type isEqualToString:@"NSDictionary"]) {
        
        // 字符串 ->
        NSData *data = [obj dataUsingEncoding:NSUTF8StringEncoding];
        resultValue = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
        
    }else if ([type isEqualToString:@"NSMutableArray"] || [type isEqualToString:@"NSMutableDictionary"]) {
        NSData *data = [obj dataUsingEncoding:NSUTF8StringEncoding];
        resultValue = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
    }
    
    [model setValue:resultValue forKeyPath:key];
    
}];
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容