您的位置:首页 > 移动开发 > IOS开发

在ios下保存数据到plist

2015-10-20 15:22 381 查看
今晚想把之前新手教程里的ToDoList拿出来,添加退出保存数据的功能,本来以为只需要简单地调用一个写数据函数就可以搞定,没想到竟然也折腾了好久。用NSDictionary的writeToFile方法一直保存不成功。
代码非常简单,就只有几行:

   NSDictionary *fileData=@{@"name":@"joe", @"gender":@"male", @"age":@24};
       if([fileData writeToFile:@"myDictionaryData.plist" atomically:YES])

           NSLog(@"Write OK!");

死活就是看不到Write
OK,把代码单独拿出来放到命令行程序里去跑还是不行。百度了一下保存plist的方法,代码也完全一样,文件名前面多了一个斜杠,加上去,还是不行,改得我一肚子火。后来看到有人说权限问题,把路径改到文档(/Users/joe/Documents/myDictionaryData.plist),终于看到Write
OK,瞬间泪流满面。从C转过来,固态思维地觉得直接保存在当前目录理所当然,结果就被无情打脸了。

在命令行程序成功后要应用到ios上,总不能把用户数据直接保存到document上吧,直接保存在程序的目录下面又没有权限怎么办?百度了一下,原来ios采用了沙盒机制,把用户数据保存到指定目录下面。
具体参考:http://blog.csdn.net/tianyitianyi1/article/details/7713103

关于plist保存成Array和Dictionary的区别:







一开始以为两种方式没什么区别,以为Array其实就是key为item0,1,2..的Dictionary(博主就是这么天真,勿拍

),想把保存为Dictionary的plist直接读到Array里面,发现读不进来,想把plist的key改为item0,1,2试试,却发现Array的key怎么都改不了,一不小心瞥见中间type那里Array和Dictionary,瞬间Orz。。。

关于保存数据失败的原因:

大部分保存失败的原因都是没有权限,这时候你需要仔细地检查一下你保存的地址有没有错,比如少打了一个斜杠之类的。另外还有一个原因就是NSArray和NSDictionary无法保存自定义的对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: