iOS装置:从plist文件加载字典到阵列
问题描述:
我试图我使用下面的目标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”示例代码中使用了相同的代码,并且在那里一切正常。
谢谢你的时间。
答
你的plist文件定义了一个字典;的确,它的根对象是dict
:
<plist version="1.0">
<dict>
所以将其加载到一些数据结构,你还不如用一个NSDictionary的尝试:
self.menuDictionary = [NSMutableDictionary dictionaryWithContentsOfFile:plistPath];
或者,你可以改变你的plist使它定义了一个字典。如果您使用Xcode plist编辑器,这并不容易,否则您会在您面前编辑一些文本。