2012-01-02 45 views
0

这是一个后续问题,我问了关于“plist的内容到NSString”。我如何获得下面显示的NSString连接到plist文件。到目前为止,我使用google搜索到的是,如果不将NSString放入NSArray/NSdictonary中,就无法做到这一点。但问题是,如果我有一个NSString的内容如下所示。NSString的内容plist

<?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>a.infoKey</key> 
    <array> 
     <string>a</string> 
     <string>a</string> 
     <string>a</string> 
     <string></string> 
    </array> 
    <key>a.titleKey</key> 
    <string>a</string> 
    <key>r.infoKey</key> 
    <array> 
     <string>r</string> 
     <string>r</string> 
     <string>r</string> 
     <string></string> 
    </array> 
    <key>r.titleKey</key> 
    <string>r</string> 
</dict> 
</plist> 

如果我添加上面一个NSArray的字符串,然后创建一个新的plist文件,它看起来搞砸。

<?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"> 
<array> 
    <string>&lt;?xml version="1.0" encoding="UTF-8"?&gt; 
&lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt; 
&lt;plist version="1.0"&gt; 
&lt;dict&gt; 
    &lt;key&gt;a.infoKey&lt;/key&gt; 
    &lt;array&gt; 
     &lt;string&gt;a&lt;/string&gt; 
     &lt;string&gt;a&lt;/string&gt; 
     &lt;string&gt;a&lt;/string&gt; 
     &lt;string&gt;&lt;/string&gt; 
    &lt;/array&gt; 
    &lt;key&gt;a.titleKey&lt;/key&gt; 
    &lt;string&gt;a&lt;/string&gt; 
    &lt;key&gt;r.infoKey&lt;/key&gt; 
    &lt;array&gt; 
     &lt;string&gt;r&lt;/string&gt; 
     &lt;string&gt;r&lt;/string&gt; 
     &lt;string&gt;r&lt;/string&gt; 
     &lt;string&gt;&lt;/string&gt; 
    &lt;/array&gt; 
    &lt;key&gt;r.titleKey&lt;/key&gt; 
    &lt;string&gt;r&lt;/string&gt; 
&lt;/dict&gt; 
&lt;/plist&gt; 
</string> 
</array> 
</plist> 

我想确切的字符串(上面一个)添加到一个新的plist文件。

回答

1

你的字符串名为[something].plist文件是已经正确格式化的plist。如果你把那个字符串放到另一个plist对象中,你会得到你所看到的,这是一个逃跑的plist-in-a-plist,这不是你想要的。

所以你需要做的只是把你的字符串,并直接保存为一个文件。有许多方法可以做到这一点,但要做到这一点是使用NSString的内置能力本身写入文件,像这样最简单的方法:

[myPlistString writeToFile:somePath atomically:YES encoding:NSUTF8StringEncoding error:NULL]; 

注意,编码类型应该是UTF8 。这是plist字符串自己的头文件中所反映的,所以这是您应该使用的编码类型。 (显然,使用error PARAM也一样,如果你在生产代码中这样做。)

一次(在somePath在这种情况下)保存到一个文件,你不说你需要用它做什么,但您可以使用NSPropertyListSerialization类将其直接加载回对象层次结构中。

1

只要将它保存到一个文件中使用-[NSString writeToFile:atomically:encoding:error:]

+0

非常感谢。这工作虽然我只是得到编译writeToFile警告:自动弃用NSString。但它仍然有效。再次感谢。 – 2012-01-02 00:53:53

+0

@SamBudda:使用额外的参数(编码和错误)来保证正确性并避免弃用警告。 – 2012-01-02 00:56:21