簡體   English   中英

無法從plist讀取

[英]Can't read from plist

我正在嘗試做一些我已經知道該怎么做的事情-但它沒有用。 尋找解決此問題的想法。 我認為這與Xcode 4.1創建plist文件的方式有關。

我正在嘗試從plist文件讀取字符串,並將其轉儲到NSArray中。 這是我的代碼:

NSString *myFile = [[NSBundle mainBundle] 
                                 pathForResource:@"File1"ofType:@"plist"];

myArray = [[NSArray alloc]initWithContentsOfFile: myFile];

我用Xcode創建了一個plist文件-一個頂級數組和一些字符串。 myArray始終為null。 我嘗試在文本編輯器中打開plist,正如我在stackoverflow的其他地方閱讀的那樣,Xcode 4在頂層創建了一個帶有Dictionary的plist。 我手動進行了編輯,使其成為頂層數組-沒有成功。 最后,我回到了頂層的dict上,試圖將其讀入NSDictionary-也沒有成功。

我看了一個又一個的教程,並在StackOverflow上閱讀了許多類似的問題,但我只是無法從plist文件中讀取任何內容-它肯定在軟件包中。 我已經在Xcode中無數次地重新創建了plist。 感謝任何建議。

這就是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>New item</key>
<array>
    <string>Ping</string>
    <string>Pang</string>
    <string>Pong</string>
</array>
</dict>
</plist>

如果只想加載plist,則需要使用屬性列表序列化首先將plist加載為NSData。

[[NSData alloc] initWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@"File1"]]

然后使用以下命令將其序列化為dict(或數組,具體取決於您的根項)

NSDictionary *aDict = [NSPropertyListSerialization propertyListWithData: options: format: error:]

當您在Xcode中查看plist時,頂級元素是制作aDict的類型。

請參閱此處以獲取更多信息: http : //developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/PropertyLists/SerializePlist/SerializePlist.html

如果要將整個plist作為字符串加載,則可能需要使用NSString方法執行某些操作,例如[NSString stringFromData]

.plist的根對象是dict ,因此您需要將其作為NSDictionary加載到內存NSDictionary

myDictionary = [[NSDictionary alloc] initWithContentsOfFile: myFile];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM