在ios下保存数据到plist
2015-10-20 15:22
381 查看
今晚想把之前新手教程里的ToDoList拿出来,添加退出保存数据的功能,本来以为只需要简单地调用一个写数据函数就可以搞定,没想到竟然也折腾了好久。用NSDictionary的writeToFile方法一直保存不成功。
代码非常简单,就只有几行:
死活就是看不到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无法保存自定义的对象。
代码非常简单,就只有几行:
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无法保存自定义的对象。
相关文章推荐
- ios 文件上传, post数据
- IOS读取项目中文件
- [转] ios打包IPA的各种问题和解决方法
- IOS-照相,相片选取
- ios 获取当前时间
- NSURLConnection的几种请求方式
- IOS 字体大全
- iOS使用系统API扫描二维码条形码&限制扫描区域
- iOS: SegmentControl 实现页面切换的四种方法
- iOS使用zbar以及AVFoundation实现二维码扫描
- IOS基本数据类型之枚举
- iOS--崩溃日志分析
- iOS之用NSTimer定时刷新按钮的文字,避免按钮闪烁的办法
- ios修改textField的placeholder的字体颜色、大小
- ios学习-oc类目
- iOS 8 使用CoreLocation定位配置
- Block - 4
- iOS 9-iPhone6s-iPadmini4企业证书信任
- iOS auto
- IOS项目集成ShareSDK实现第三方登录、分享、关注等功能