美文网首页NetworkiOS开发 技术集锦奔跑吧 iOS
【Objective-C】请求数据放到Plist文件存到沙盒实现

【Objective-C】请求数据放到Plist文件存到沙盒实现

作者: 酷酷的小虎子 | 来源:发表于2016-06-27 08:48 被阅读1616次

iOS应用数据存储的常用方式主要有:

  • XML属性列表(plist)归档
  • Preference(偏好设置)
  • NSKeyedArchiver归档(NSCoding)
  • SQLite3
  • Core Data

今天小主教大家最简单的本地存储方式
大体的主要思路是我们通常用AFNetworking网络请求数据(返回结果一般是大字典),我们要在请求成功的Block中把请求回来的数据归档写入PList文件中,再在请求失败的Block里将数据反归档取出,再进行数据解析

第一步:我们要封装归档反归档工具

@interface ZHArchiverTools : NSObject
//归档的工具方法
+ (void)archiverObject:(id)object ByKey:(NSString *)key
              WithPath:(NSString *)path;

+ (id)unarchiverObjectByKey:(NSString *)key
                   WithPath:(NSString *)path;
@end

@implementation ZHArchiverTools
+ (void)archiverObject:(id)object ByKey:(NSString *)key WithPath:(NSString *)path
{
    //初始化存储对象信息的data
    NSMutableData *data = [NSMutableData data];
    //创建归档工具对象
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
    //开始归档
    [archiver encodeObject:object forKey:key];
    //结束归档
    [archiver finishEncoding];
    //写入本地
    NSString *docPath = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).lastObject;
    NSString *destPath = [[docPath stringByAppendingPathComponent:@"Caches"] stringByAppendingPathComponent:path];

    [data writeToFile:destPath atomically:YES];
}
+ (id)unarchiverObjectByKey:(NSString *)key WithPath:(NSString *)path
{
    NSString *docPath = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).lastObject;
    NSString *destPath = [[docPath stringByAppendingPathComponent:@"Caches"] stringByAppendingPathComponent:path];
    NSData *data = [NSData dataWithContentsOfFile:destPath];
    //创建反归档对象
    NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
    //接收反归档得到的对象
    id object = [unarchiver decodeObjectForKey:key];
    return object;
}
@end
(以上归档反归档可以直接封装到网络请求的工具类中,以网址为键)

第二步:


归档存数据

第三步:


反归档取数据

断网打开APP,缓存完成

相关文章

  • 【Objective-C】请求数据放到Plist文件存到沙盒实现

    iOS应用数据存储的常用方式主要有: XML属性列表(plist)归档 Preference(偏好设置) NSKe...

  • plist文件用法小结

    创建plist文件路径(一般保存到沙盒document文件夹中) 2.根据路径,创建或者取出plist文件内容(如...

  • iOS之文件存储

    将字典存储到沙盒中(文件名后缀.plist) 从沙盒中读取字典数据 删除沙盒文件

  • 数据存储

    如何存储数据 : 文件:1、沙盒 2、Plist 3、NSKeyedArchiver归档 / NSKeyedUn...

  • NSUserDefaults

    NSUserDefaults是将数据保存在一个plist格式的文件中. 此plist文件路径为APP沙盒文件夹下/...

  • iOS数据存储

    如何存储数据 1、文件 3、NSUserDefaults 2、数据库 文件 1、沙盒 2、Plist 3、NSKe...

  • iOS开发中数据持久化的总结

    数据持久化链接导航: 沙盒基本机制(sandbox) 数据持久化文件读写(plist 文件)NSUserDefau...

  • iOS开发-选择城市

    实现思路: 首先我们需要城市数据资源,这里存到了plist文件里。 从plist里面取出城市数据,自己实现inde...

  • iOS数据持久化

    1、NSUserDefault 2、文件:plist、归档、写沙盒 3、数据库:fmdb、coreData

  • iOS开发之数据存储

    一、数据存储的几种方式 NSUserDefaults Plist文件 解归档 沙盒 SQLite CoreData...

网友评论

    本文标题:【Objective-C】请求数据放到Plist文件存到沙盒实现

    本文链接:https://www.haomeiwen.com/subject/efrhdttx.html