【发布时间】:2015-12-24 18:10:29
【问题描述】:
我是 Objective C 的新手,目前正在开发一个 iphone 应用程序。我的应用程序需要获取用户输入(字符串)并存储它们,所以我使用 plist 来存储数据。目前,我可以从 plist 文件中读取。但是,当我尝试写入 plist 文件时,文件本身根本没有改变。
我想要做的是将用户的输入附加到现有的 plist 文件中。所以我读取了 plist 文件并将数组存储到 mutableArray。然后,我使用 addObject 函数将新的用户输入附加到 mutableArray 的末尾。到目前为止,一切正常,而 mutableArray 正是我想要的。最后一步对我不起作用:
[mutableArray writeToFile:[self dataFilePath] atomically:YES];
我假设我的 plist 文件(与 .h 和 .m 文件一起位于我的资源文件夹中)应该在执行此行后更改,并且应该附加新的用户输入,但该文件似乎没有完全改变。
我看过有人说我应该将plist文件从NSBundle复制到Documents目录,因为plist文件在资源文件夹中,但是在youtube上几乎所有的教程中,都没有出现过这样的问题并且他们的代码在资源文件夹中的 plist 文件中仍然可以正常工作。
提前感谢您的帮助。
【问题讨论】:
-
这是的问题。您不能写入 iOS 应用程序的捆绑包
-
如果 plist 在应用程序包中,它在真实设备上是不可写的。快速测试是在模拟器上运行您的代码。如果保护是问题,我相信它会在模拟器上工作并在手机上失败。
-
谢谢 vadian 和 Phillip!只是另一个问题:那么我应该仅在应用程序第一次启动时将 plist 文件从捆绑包复制到文档目录并从那里访问它吗?还是有其他方法可以做到这一点?我想没有理由从一开始就在资源文件夹中包含一个 plist 文件,因为我可以在应用程序启动时在文档目录中创建一个新的 plist 文件并从那里开始。
标签: objective-c xcode plist