最省心的数组存储(存取各一行代码即可)
2016-06-26 本文已影响620人
wg689
背景(需求)
需要将用户点击的新闻的标题存储到本地便于做一个选中的状态,其中用到数组的归档,考虑到为以后用起来方便,我决定对它进行封装,力求以后使用最省心,存一行搞定,取一行搞定.一行哦!!!
core data,realm,sqlite 都可以存储哦,小功能就不用搞得那么复杂,就直接存储为文件吧!
一)上一下效果图,就是将选中灰色的标题保存到数组中
456.gif二)看看我是怎么使用的
-
存的时候直接将字符串存到一个@"state"标示的数组中
存的截图.png -
取的时候直接使用@"state"的标示获取到一个数组
取的截图.png
是不是没骗你,存取一行代码搞定!而且是类方法哦,调用很方便的
类似的思想封装成模型,或者存储到字典都是一行代码,后期有时间再慢慢完善.**
三)最后上代码,里面有详细过程
NSArray+Extensions.h
//
// NSArray+Extensions.h
// Vote
//
// 将数组或字典存到本地,以data的形式,这个可以解决出现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,...)的一个数组,底层会将path 拼接为真正的沙盒路径
+(NSArray*)readFile:(NSString*)path;
@end
NSArray+Extensions.m
+ (BOOL)writetargetStr:(NSString*)targetStr ToFilePath:(NSString *)path{
//1.写入之前先读取已经存在过的数组
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];
}