提示:使用了 NSData+YYAdd , JKDBModel
前言
为了实现简单数据存储,通过使用JKDBModel简单实现。但是在存储接口返回值时,会出现有的接口返回值存储失败,有的成功。通过简单分析问题出现在返回值数据类型fmdb无法存储。简单思路就是将无法存储数据转成base64
注意:操作base64是通过 NSData+YYAdd实现
一、存储
以前是
[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 这样在特殊数据比如有网页标签的时候JKDBModel就可能出现存失败的情况。
优化后:
- (NSString *)dictionaryToJson:(NSDictionary *)dic {
if (dic == nil) {
return nil;
}
NSError *parseError = nil;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingFragmentsAllowed error:&parseError];
if (parseError) {
return nil;
}
return [jsonData base64EncodedString];
}
二、取出数据
需要和存储过程对应上,怎么存的怎么取
(以前是: NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding])
- (NSDictionary *)dictionaryWithBase64JsonString:(NSString *)jsonString {
if (jsonString == nil) {
return nil;
}
NSData *jsonData = [NSData dataWithBase64EncodedString:jsonString];
NSError *err;
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData
options:NSJSONReadingMutableContainers
error:&err];
if (err) {
NSLog(@"json解析失败:%@", err);
return nil;
}
return dic;
}
总结
转码过程要对应