2012-07-20 70 views
4

我试图我使用下面的目标C代码iOS装置:从plist文件加载字典到阵列

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

的以下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> 

plist的名字是Menu.plist。

代码执行后,menuArray为空。

奇怪的是,苹果公司的“QuickContacts”示例代码中使用了相同的代码,并且在那里一切正常。

谢谢你的时间。

回答

13

你的plist文件定义了一个字典;的确,它的根对象是dict

<plist version="1.0"> 
<dict> 

所以将其加载到一些数据结构,你还不如用一个NSDictionary的尝试:

self.menuDictionary = [NSMutableDictionary dictionaryWithContentsOfFile:plistPath]; 

或者,你可以改变你的plist使它定义了一个字典。如果您使用Xcode plist编辑器,这并不容易,否则您会在您面前编辑一些文本。