1

writeToFile:atomically 是否将数据添加到现有的.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/! 这对任何人都有意义吗?

4

2 回答 2

1

我会假设plist应用程序附带的read only- 它位于应用程序包中。

任何更新都存储在用户特定的目录中,以便每个用户都有自己的特定修改。

于 2010-03-12T03:30:03.253 回答
1

当然,您可以创建和编写自己的 .plist 文件。通过NSArray *arrayPath=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *userFile=[[arrayPath objectAtIndex:0] stringByAppendingString:@"/whatever.plist"];,您可以编写/编辑它。

但我也有同样的问题:如何根据特定键编辑值,而不是覆盖整个 .plist 文件?

例如,如果我想将键“Title”的值“MyTitle”更改为:<key>Title</key> <string>MyTitle</string>“向日葵”,我该如何从代码中做到这一点?

于 2010-07-16T17:11:27.270 回答