背景(需求)
需要將用戶點擊的新聞的標題存儲到本地便于做一個選中的狀態(tài),其中用到數(shù)組的歸檔,考慮到為以后用起來方便,我決定對它進行封裝,力求以后使用最省心,存一行搞定,取一行搞定.一行哦!!!
core data,realm,sqlite 都可以存儲哦,小功能就不用搞得那么復雜,就直接存儲為文件吧!
一)上一下效果圖,就是將選中灰色的標題保存到數(shù)組中
二)看看我是怎么使用的
-
存的時候直接將字符串存到一個@"state"標示的數(shù)組中
-
取的時候直接使用@"state"的標示獲取到一個數(shù)組
是不是沒騙你,存取一行代碼搞定!而且是類方法哦,調(diào)用很方便的
類似的思想封裝成模型,或者存儲到字典都是一行代碼,后期有時間再慢慢完善.**
三)最后上代碼,里面有詳細過程
NSArray+Extensions.h
//
// NSArray+Extensions.h
// Vote
//
// 將數(shù)組或字典存到本地,以data的形式,這個可以解決出現(xiàn)null無法保存的情況
#import <Foundation/Foundation.h>
@interface NSArray(NSArray_Extensions)
//將 targetStr存儲到path下面(路徑的一個唯一標示即可,可以1,2,3,...)底層會將path 拼接為真正的沙盒路徑
+ (BOOL)writetargetStr:(NSString*)targetStr ToFilePath:(NSString *)path ;
//讀取到path下面(路徑的一個唯一標示即可,可以1,2,3,...)的一個數(shù)組,底層會將path 拼接為真正的沙盒路徑
+(NSArray*)readFile:(NSString*)path;
@end
NSArray+Extensions.m
+ (BOOL)writetargetStr:(NSString*)targetStr ToFilePath:(NSString *)path{
//1.寫入之前先讀取已經(jīng)存在過的數(shù)組
NSArray *Arr = [NSArray readFile:path];
NSMutableArray *mutArr = [NSMutableArray arrayWithArray:Arr];
//不加判斷存進去空會崩潰
if(!(targetStr.length>0&&targetStr))
return NO;
[mutArr addObject:targetStr];
NSString *path1 = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
NSString *newPath = [path1 stringByAppendingPathComponent:path];
NSData * data = [NSKeyedArchiver archivedDataWithRootObject:mutArr];
return [data writeToFile:newPath
atomically:YES];
}
+(NSArray*)readFile:(NSString*)path{
NSString *path1 = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
NSString *newPath = [path1 stringByAppendingPathComponent:path];
NSData * data = [NSData dataWithContentsOfFile:newPath];
return [NSKeyedUnarchiver unarchiveObjectWithData:data];
}