Plist文件本地读取简要封装

话不多说,直接上代码

#pragma mark - 将数组保存为本地Plist文件(Model版)
+ (void)SaveArrayToPlistWithArray:(NSArray *)plistArray savePath:(NSString *)savePath
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
    NSString *path = [paths objectAtIndex:0];
    NSString *filename = [path stringByAppendingPathComponent:savePath];
    
    [plistArray writeToFile:filename atomically:YES];
}

#pragma  mark - 读取本地Plist文件(Model版)
+ (NSArray *)readArrayWithSavePath:(NSString *)savePath
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
    NSString *path = [paths    objectAtIndex:0];
    NSString *filename = [path stringByAppendingPathComponent:savePath];
    //读
    NSMutableArray *array = [[NSMutableArray alloc] initWithContentsOfFile:filename];
    
    return array;
}

#pragma mark - 将字典保存为本地Plist文件
+ (void)SaveModelDictionaryToPlistWithDictionary:(NSDictionary *)modelDictionary savePath:(NSString *)savePath {
    // 把数据保存到沙盒里的plist文件
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
    NSString *path = [paths objectAtIndex:0];
    // 获取存储plist的完整路径
    NSString *filename = [path stringByAppendingPathComponent:savePath];
    
    [modelDictionary writeToFile:filename atomically:YES];
    NSLog(@"文件写入完成");
    
}

#pragma  mark - 读取本地Plist文件 (NSDictionary类型)
+ (NSDictionary *)readModelDictionaryWithSavePath:(NSString *)savePath {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
    NSString *path = [paths objectAtIndex:0];
    NSString *filename = [path stringByAppendingPathComponent:savePath];
    
    // 读
    NSDictionary *plistDic = [[NSDictionary alloc] initWithContentsOfFile:filename];
    
    return plistDic;
}

#pragma mark - 将数组保存为本地Plist文件(Model版)
+ (void)SaveModelArrayToPlistWithArray:(NSArray *)modelArray savePath:(NSString *)savePath
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
    NSString *path = [paths objectAtIndex:0];
    NSString *filename = [path stringByAppendingPathComponent:savePath];
    NSMutableArray *tempArray = [NSMutableArray array];
    
    for (id model in modelArray) {
        NSData *tempData = [NSKeyedArchiver archivedDataWithRootObject:model];
        [tempArray addObject:tempData];
    }
    [tempArray writeToFile:filename atomically:YES];
}

#pragma  mark - 读取本地Plist文件(Model版)
+ (NSArray *)readModelArrayWithSavePath:(NSString *)savePath
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
    NSString *path = [paths    objectAtIndex:0];
    NSString *filename = [path stringByAppendingPathComponent:savePath];
    //读
    NSMutableArray *array = [[NSMutableArray alloc] initWithContentsOfFile:filename];
    NSMutableArray *tempArray = [NSMutableArray array];
    for (NSData *tempData in array) {
        id model = [NSKeyedUnarchiver unarchiveObjectWithData:tempData];
        [tempArray addObject:model];
    }
    
    return tempArray;
}

GitHub 链接

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,612评论 25 708
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一种新的协议。它实...
    香橙柚子阅读 24,131评论 8 183
  • 看了很多关于关闭朋友圈的文章,自己也断断续续地关过,想看的时候再打开来再看。但是之前的关闭朋友圈有一个弊端:自己...
    日雨阅读 789评论 0 1
  • 时间真的很自由,你可以选择闷头刷题,也可以刷足信息,或者只看英语,有时盯着电脑会眼乏,那就冲个澡吧 能够明显感受到...
    良辰美LiangChen阅读 184评论 0 0