objective -c添加/编辑.plist文件

时间:2010-03-12 02:28:41

标签: objective-c info.plist root.plist

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/中!这对任何人都有意义吗?

2 个答案:

答案 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“更改为”向日葵“,我该如何从代码中执行此操作?