4

次のplistファイルをNSMutableArrayにロードしようとしています

<?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>Item 0</key>
<dict>
    <key>title</key>
    <string>East Coast</string>
</dict>
<key>Item 1</key>
<dict>
    <key>title</key>
    <string>West Coast</string>
</dict>
<key>Item 2</key>
<dict>
    <key>title</key>
    <string>South Rhodes</string>
</dict>
</dict>
</plist>

私は次のObjectiveCコードを使用しています

- (void)viewDidLoad 
{
    [super viewDidLoad];
    // Load data from the plist file
    NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Menu" ofType:@"plist"];
    self.menuArray = [NSMutableArray arrayWithContentsOfFile:plistPath];
}

plistの名前はMenu.plistです。

コードが実行された後、menuArrayは空になります。

奇妙なことに、Appleの「QuickContacts」サンプルコードで同じコードが使用されており、すべてが完全に正常に機能します。

お時間をいただきありがとうございます。

4

1 に答える 1

13

plist ファイルは辞書を定義します。実際、そのルート オブジェクトはdict:

<plist version="1.0">
<dict>

したがって、それを何らかのデータ構造にロードするには、NSDictionary を試してみてください。

self.menuDictionary = [NSMutableDictionary dictionaryWithContentsOfFile:plistPath];

または、辞書を定義するように plist を変更することもできます。Xcode の plist エディターを使用している場合、これを行うのは簡単ではありません。

于 2012-07-20T09:35:35.727 に答える