用字典格式写plist

时间:2012-06-22 01:05:43

标签: ios objective-c xcode dictionary plist

我正在将信息写入文档文件夹中的plist文件中,我大约有90%的方式(我认为)。我只需要帮助格式化我正确编写的信息。

我需要以这种格式编写数据:

<plist version="1.0">
<array>
<dict>
    <key>Level</key>
    <string>0</string>
    <key>Top</key>
    <string>0</string>
    <key>Needed</key>
    <string>0</string>
    <key>Passed</key>
    <string>0</string>
</dict>
<dict>
    <key>Level</key>
    <string>1</string>
    <key>Top</key>
    <string>5300</string>
    <key>Needed</key>
    <string>4000</string>
    <key>Passed</key>
    <string>Yes</string>
</dict>
</array>
</plist>

我正在使用此代码写入文件:

NSMutableDictionary *array = [[NSMutableDictionary alloc]init]; 
[array setObject:field1.text forKey:@"Top"];
[array writeToFile:[self dataFilePath] atomically:YES];

设置键并放入值。但有人可以帮助我正确地格式化它看起来像上面的plist。

3 个答案:

答案 0 :(得分:1)

以下是示例代码:

  NSMutableArray *plistArray = [[ NSMutableArray alloc] initWithContentsOfFile:[self dataFilePath]];
  NSLog(@"plistArray before additon: %@", plistArray);
  for (NSMutableDictionary *dict in plistArray)
  {
    //if you want to search for a record only otherwise remove the if statement
    if ([[dict objectForKey:@"Top"] isEqualToString:@"0"])  //this just an example, modify this per your needed
      [dict setObject:field1.text forKey:@"Top"];  //select which dictionary record to set the Top key
  }
  NSLog(@"plistArray after additon : %@", plistArray);
  [plistArray writeToFile:[self dataFilePath] atomically:YES];

答案 1 :(得分:0)

如果右键单击plist文件,则应该可以在文本编辑器中打开它。如果你这样做,你可以复制和粘贴你的格式吗?或者你的意思是你有太多的数据需要手工编写而你正在尝试用脚本编写它?

答案 2 :(得分:0)

您的代码很混乱......您有一个名为array的变量,但它被声明为字典。从您的属性列表示例中,您看起来需要外层的数组,因此您的代码应使用NSArrayNSMutableArray