AG亚游集团 >iOS开发

iOS读写json文件

2019-01-21 10:05 编辑: Gboy 分类:iOS开发 来源:雪山飞狐_91ae

一.获取沙盒路径

每个iOS应用都有自己专属的应用沙盒,应用沙盒就是文件系统中的目录。但是iOS系统会将每个应用的沙盒目录与文件系统的其他部分隔离,应用必须待在自己的沙盒里,并只能访问自己的沙盒。

沙盒目录包含内容
Documents存放应用运行时生成的并且需要保留的数据,iCloud同步时会同步该目录
Library/Caches存放应用运行时生成的数据,iCloud同步时不会同步该目录
Library/Preferences/存放所有的偏好设置
tmp/存放应用运行时的临时数据

获取文件路径:

    /两种获取应用沙盒路径的不同方法
    NSString *documentPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];    NSString *cachePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Caches"];    NSString *preferencesPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Preferences"];    NSString *tmpPath = [NSHomeDirectory() stringByAppendingPathComponent:@"tmp"];    
    /NSSearchPathForDirectoriesInDomains()返回的是一个数组,这是因为对于Mac OS可能会有多个目录匹配某组指定的查询条件,但是在iOS上只有一个匹配的目录
    NSString *documentPath1 = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject;    NSString *cachePath1 = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).lastObject;    NSString *tmpPath1 = NSTemporaryDirectory();

读写json文件

处理json数据主要是用了NSJSONSerialization这个类,这个类主要有下列三个API:

/判断传入的对象是否可以转化为json数据,如果可以,返回YES,否则返回NO。+ (BOOL)isValidJSONObject:(id)obj;
/传入一个json数据,返回一个foundation对象+ (id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError * _Nullable *)error;
/传入foundation对象,转化为json数据+ (NSData *)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError * _Nullable *)error;

实例:

    NSArray *array = @[@1, @2, @3];    NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:array,@"1",@"dongdong", @"name", nil];    
    /首先判断能否转化为一个json数据,如果能,接下来先把foundation对象转化为NSData类型,然后写入文件
    if ([NSJSONSerialization isValidJSONObject:dic]) {        NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:1 error:nil];
        [jsonData writeToFile:jsonPath atomically:YES];
    }      
    /在读取的时候首先去文件中读取为NSData类对象,然后通过NSJSONSerialization类将其转化为foundation对象
    NSData *jsonData = [[NSFileManager defaultManager] contentsAtPath:jsonPath];    NSArray *jsonDic = [NSJSONSerialization JSONObjectWithData:jsonData options:1 error:nil];


作者:雪山飞狐_91ae
链接:/www0686jianshu0686com/p/bdc925e98b7a


搜索CocoaChina微信公众号:CocoaChina
微信扫一扫
订阅每日移动开发及APP推广热点资讯
公众号:
CocoaChina
我要投稿   收藏文章
上一篇:RunLoop学习笔记
我来说两句
发表评论
您还没有登录!请登录注册
所有评论(0

综合评论

相关帖子

sina AG亚游集团weixin mail 回到顶部
古巴坠机:事发时天阴有雨 客机系从墨西哥租借 慷慨激昂为中国辩护!澳洲富翁猛批本国对华妄想症 美军机飞行中零部件再现坠落 事发6天后才联络日本 雷军:小米硬件税后利润率不超5% 贪恋毛利是不归路 周末影响市场重要资讯回顾 父亲让女儿待男更衣室半小时 媒体:合适吗?(图) 沪媒:若非奥斯卡上港或被爆冷 防守出了很多问题 29+13+5+3!死死压制广东!快来膜拜辽宁哈神 央视调查保健品市场乱象:办讲座送礼物假体检 俄专家:美国在土耳其采购S400导弹问题上对土施压 调查显示超二成韩国年轻人曾买虚拟货币 Facebook AI作用有限:恐怖主义内容仍在平台活…
美国无所不能?美军或将阿富汗乡村拱手让与塔利班 英足总正式宣布处罚瓜帅 佩戴黄丝带遭罚款 8年前花1万比特币买披萨的程序员又买了两个 特朗普欲对华追加关税 共和党议员:他一定是疯了 风投支持金融科技独角兽全球排名:陆金所第一 外卖员要女顾客照片被拉黑 事后连续收到威胁短信 浙江稠州商业银行行长周瑞谷登山 不幸坠崖遇难 中概股CDR研究再启 “独角兽”归途仍临三挑战 愚人节新闻让田径巨星躺枪 世锦赛金牌险\"被剥夺\" 金斯米尔锦标赛阿瑞雅三人延长赛胜出 林希妤T67 河北张家口一名副局长在单位卫生间自缢 患抑郁症 美国多地民众再次走上街头 举行“女性大游行”
英美德法发布联合声明 认定俄罗斯毒害前双面间谍 前驻纽约参赞:战后几代人努力的贸易体制被美冲击 美又现校园枪击案 19岁枪手欲“大开杀戒”被制服 百度高管解读财报:信息流业务发展迅速 仍有增长空间 伊朗主帅:梅西应被禁赛!除非证明他是地球人 关于沙玛十件事:2号铁起步 16岁横扫印度业余赛 IEA报告:原油市场供需关系或反转 特朗普金正恩会晤地点定在新加坡 为什么会选它? U17女篮世界杯-中国73-82负于日本无缘八强 服装批发5元到15元 现在什么行业挣钱快 拿回家做的手工活大批 有什么好的发展项目 AG亚游集团