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 weixin mail 回到顶部
阿富汗上半年因爆炸导致的死亡人数已超过一千 我国三年海外追逃追赃抓回2210人追赃近80亿 科学家研发人猪胚胎后 世界首例人羊嵌合体诞生 “脸书”数据外泄风波:扎克伯格将在美国会作证 宝马在中国首获自动驾驶路试牌照 我国台办前主任评价蔡英文\"执政\"作为 16个字一针… 今年夏天企业新风向:科技企业赴港上市“热” 塞莱斯亮相布达佩斯站儿童日 分享职业生涯回忆 特朗普突然“换将” 对美朝领导人见面有何影响? 权健战华夏两主帅都输不起 U23刘奕鸣停赛奇兵顶替 杨震足彩:那不勒斯防平局 马尔默坐和望赢 以色列总理:该国强力机构进入高度戒备状态
百日内5名将军密集跨军种“转战” 近2年均刚调岗 疑似全明星球衣曝光!黑白配是美还是丑(图) 招银国际:香港经济增势强劲 年内恒指目标35000点 扎克伯格首次赴美国会作证 接受质询长达数小时 英伟达第一季度营收32亿美元 净利同比增145% 舌尖上的马拉松 银马美食攻略大放送 63岁董事长被嫌太老遭罢免 自投反对票:太儿戏 浪漫天文景观:8日凌晨火星和土星“双星会月” 恒丰后卫:保级还有希望不放弃 穆谢奎表现很不错 2018CBBA新浪健美健身大赛冠军决赛6月8日天津举… 拼多多股价在开盘之后直线下跌 最高跌幅超10% 九部门:子女等必须为农村留守老年人提供经济供养
涨停板早知道:七大利好明日有望发酵 俄罗斯拟就美国提高钢铝关税向世贸组织申诉 这个大省一个月后再密集调整地级市书记 仅剩省会 河北武安扫黑除恶 10名村党支部书记被采刑事措施 外媒关注王毅访马来西亚:马方随时准备与中国合作 美高官炒中国新武器威胁:反卫星武器近年将部署 母校对决!囧神赢得与勇士FMVP赌局 赌注太羞耻 奥古斯塔的好莱坞剧情:一个消防员来打美国大师赛 刚创出利润新高的丰田将面临新对手? 微信赚钱平台 怎么赚钱快 现实点的 最有前景的十大行业 最有前景的十大行业 AG亚游集团