本地储存写入到json文件

最近一直做本地存储的问题,是写入到json文件中,使用的时候在读取,不过如果数组中存储的是模型数据,这样可能会造成存储或者读取失败,在储存数组前,记得先遍历数组,然后模型转字典,再把字典存储到数组中,这样就OK了,下面我的代码是数组中存的字典,无需在转换了。

不过使用writeToFile写入文件的时候,本次保存会把上次保存的数据给覆盖掉,不能累加,解决方法,可以使用归档存储,也可以换中思路,再次保存的时候,先读取上次保存的数据,然后一起写入这样就OK了。

在适当的时候调用就可以了
保存

[self saveArrayandNSArray:self.dataDic andByAppendingPath:@"未盘.json"];

读取

NSMutableArray *weipan = [self readArrayByAppendingPath:@"未盘.json"];

删除

 [self removeNSArrayByAppendingPaht:@"未盘.json"];

#pragma mark - 读取本地数组
- (NSMutableArray *)readArrayByAppendingPath:(NSString *)arrayName{
    // 拼接路径
    NSString * docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES) lastObject];
    NSString * fileName = [docDir stringByAppendingPathComponent:arrayName];
    NSData *jdata = [[NSData alloc] initWithContentsOfFile:fileName];
    if (jdata) {
        //反序列化
        NSArray *array = [NSJSONSerialization JSONObjectWithData:jdata options:0 error:NULL];    
        NSMutableArray *arrayDict=[NSMutableArray array];
        for (int i=0; i
#pragma mark - 保存本地数组
- (void)saveArrayandNSArray:(NSMutableArray *)array andByAppendingPath:(NSString *)name {
    //创建json文件 获取根目录
    NSString * docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES) lastObject];
    NSString * fileName = [docDir stringByAppendingPathComponent:name];
    if (array) {
        //字典转二进制
        NSData *dicData = [NSJSONSerialization dataWithJSONObject:array options:NSJSONWritingPrettyPrinted error:nil];
        //二进制转字符串
        NSString *dataStr = [[NSString alloc] initWithData:dicData encoding:NSUTF8StringEncoding];  
        [dataStr writeToFile:fileName atomically:YES encoding:NSUTF8StringEncoding error:nil];
    }
}


#pragma mark - 删除本地数组
- (void)removeNSArrayByAppendingPaht:(NSString *)arrayName { 
    NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES) lastObject];
    NSString * fileName = [docDir stringByAppendingPathComponent:arrayName];
    NSFileManager *manager=[NSFileManager defaultManager];
    [manager removeItemAtPath:fileName error:nil];
}

你可能感兴趣的:(本地储存写入到json文件)