算法或者代码tableview和cell相关复制粘贴

最省心的数组存储(存取各一行代码即可)

2016-06-26  本文已影响620人  wg689

背景(需求)

需要将用户点击的新闻的标题存储到本地便于做一个选中的状态,其中用到数组的归档,考虑到为以后用起来方便,我决定对它进行封装,力求以后使用最省心,存一行搞定,取一行搞定.一行哦!!!
core data,realm,sqlite 都可以存储哦,小功能就不用搞得那么复杂,就直接存储为文件吧!

一)上一下效果图,就是将选中灰色的标题保存到数组中

456.gif

二)看看我是怎么使用的

是不是没骗你,存取一行代码搞定!而且是类方法哦,调用很方便的

类似的思想封装成模型,或者存储到字典都是一行代码,后期有时间再慢慢完善.**

三)最后上代码,里面有详细过程

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];
}
上一篇下一篇

猜你喜欢

热点阅读