writeToFile:原子地将数据添加到现有的.plist中吗?是否可以修改.plist中的值?应该重新编译应用程序以实现更改吗?
我的应用中有自定义.plist列表。结构如下:
<array>
<dict>
<key>Title</key>
<string>MyTitle</string>
<key>Measurement</key>
<dict>
<key>prop1</key>
<real>28.86392</real>
<key>prop2</key>
<real>75.12451</real>
</dict>
<key>Distance</key>
<dict>
<key>prop3</key>
<real>37.49229</real>
<key>prop4</key>
<real>58.64502</real>
</dict>
</dict>
</array>
数组标记包含多个具有相同结构的项目。我需要将项添加到现有的.plist中。那可能吗?我可以写一个UIView来做到这一点,如果是这样的话。
*编辑 - 好吧,我只是试着写一篇文章,希望如果不添加它就会至少覆盖。奇怪的是,以下代码在读写时选择不同的路径。
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
.plist文件在我的项目中。我可以从中读到。当我写它时,它正在创建一个.plist文件并将其保存在我的/users/.../library/中!这对任何人都有意义吗?
答案 0 :(得分:1)
我认为应用程序附带的plist
被假定为read only
- 它位于应用包内。
任何更新都存储在用户特定的目录中,因此每个用户都有自己的特定修改。
答案 1 :(得分:1)
当然,您可以创建和编写自己的.plist文件。通过NSArray *arrayPath=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *userFile=[[arrayPath objectAtIndex:0] stringByAppendingString:@"/whatever.plist"];
,您可以编写/编辑它。
但我也有同样的问题:如何针对特定键编辑值,而不是覆盖整个.plist文件?
E.g。如果我想将“<key>Title</key>
<string>MyTitle</string>
中的”标题“的值”MyTitle“更改为”向日葵“,我该如何从代码中执行此操作?