在ios下保存数据到plist

在尝试为iOS应用添加保存数据到plist功能时,遇到保存失败的问题。通过调整保存路径到Documents目录解决权限问题,了解了iOS的沙盒机制。同时,区分了Array和Dictionary在plist保存中的差异,以及保存失败可能由于自定义对象导致。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今晚想把之前新手教程里的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采用了沙盒机制,把用户数据保存到指定目录下面。

关于plist保存成Array和Dictionary的区别:
在ios下保存数据到plist
在ios下保存数据到plist


一开始以为两种方式没什么区别,以为Array其实就是key为item0,1,2..的Dictionary(博主就是这么天真,勿拍 在ios下保存数据到plist),想把保存为Dictionary的plist直接读到Array里面,发现读不进来,想把plist的key改为item0,1,2试试,却发现Array的key怎么都改不了,一不小心瞥见中间type那里Array和Dictionary,瞬间Orz。。。



关于保存数据失败的原因:
大部分保存失败的原因都是没有权限,这时候你需要仔细地检查一下你保存的地址有没有错,比如少打了一个斜杠之类的。另外还有一个原因就是NSArray和NSDictionary无法保存自定义的对象。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值