本地儲存寫入到j(luò)son文件

最近一直做本地存儲的問題,是寫入到j(luò)son文件中,使用的時候在讀取,不過如果數(shù)組中存儲的是模型數(shù)據(jù),這樣可能會造成存儲或者讀取失敗,在儲存數(shù)組前,記得先遍歷數(shù)組,然后模型轉(zhuǎn)字典,再把字典存儲到數(shù)組中,這樣就OK了,下面我的代碼是數(shù)組中存的字典,無需在轉(zhuǎn)換了。

不過使用writeToFile寫入文件的時候,本次保存會把上次保存的數(shù)據(jù)給覆蓋掉,不能累加,解決方法,可以使用歸檔存儲,也可以換中思路,再次保存的時候,先讀取上次保存的數(shù)據(jù),然后一起寫入這樣就OK了。

在適當(dāng)?shù)臅r候調(diào)用就可以了
保存

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

讀取

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

刪除

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

#pragma mark - 讀取本地數(shù)組
- (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<array.count; i++) { 
            NSDictionary *dict=array[i];   
            [arrayDict addObject:dict];
        }
        return arrayDict;
    }else {
        NSLog(@"沒有數(shù)據(jù)。。。");
        return nil;
    }
}
#pragma mark - 保存本地數(shù)組
- (void)saveArrayandNSArray:(NSMutableArray *)array andByAppendingPath:(NSString *)name {
    //創(chuàng)建json文件 獲取根目錄
    NSString * docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES) lastObject];
    NSString * fileName = [docDir stringByAppendingPathComponent:name];
    if (array) {
        //字典轉(zhuǎn)二進(jìn)制
        NSData *dicData = [NSJSONSerialization dataWithJSONObject:array options:NSJSONWritingPrettyPrinted error:nil];
        //二進(jìn)制轉(zhuǎn)字符串
        NSString *dataStr = [[NSString alloc] initWithData:dicData encoding:NSUTF8StringEncoding];  
        [dataStr writeToFile:fileName atomically:YES encoding:NSUTF8StringEncoding error:nil];
    }
}


#pragma mark - 刪除本地數(shù)組
- (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];
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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