2012-01-02 86 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