Cocoa / Objective-C将嵌套字符串/数据写入文件,怎么做?

时间:2012-01-02 01:31:02

标签: objective-c cocoa plist

我需要创建一个包含6条记录的xml .plist,其中记录5是来自用户的输入字符串,其余的都是固定数据。我不确定这样做的最佳方法是什么?看起来它应该很简单,但我没有取得多大成功。

需要编写的数据如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>AREA51</key>
    <dict>
       <key>ORIGIN</key>
       <data>M45</data>

          ...(4 more records)... 

              (USER STRING) 

          ...(1 more record)...

   </dict>
</dict>
</plist>

我尝试过一些例子,但我认为它们已经过时而且不符合规范。谢谢!

2 个答案:

答案 0 :(得分:5)

我不知道这个教程怎么可能会过时,你这样做的方式在十年之内没有改变。创建字典,并使用-writeToFile:atomically:方法。

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
    // object first...
    [NSDictionary dictionaryWithObjectsAndKeys:
        @"M45", @"ORIGIN", // object first, then key
        ... // repeat
        nil],
    // then key...
    @"AREA51",
    nil];
[dict writeToFile:path atomically:NO];

(我不知道你是否真的需要原子写作。如果你不确定,可以将它改为YES。)

答案 1 :(得分:1)

字典 * 中的条目是无序的,因此您不应期望用户的条目位于任何特定位置。相反,您使用密钥来检索数据,因此您可能有:

<dict>
   <key>ORIGIN</key>
   <data>M45</data>
   <key>USERENTRY</key>
   <data>Hello world!</data>
   ...
</dict>

或者可能是:

<dict>
   <key>USERENTRY</key>
   <data>Hello world!</data>
   <key>ORIGIN</key>
   <data>M45</data>
   ...
</dict>

或其他一些订单。 Deitrich Epp编写plist的说明应该是编写数据所需的全部内容。只要意识到你可以使用任何对象来获取数据,包括用户的字符串。