这是我的问题。我有一个名为myPlist的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>1</key>
<array>
<string>Dog</string>
<string> empty </string>
<true/>
</array>
<key>2</key>
<array>
<string>Car</string>
<string> empty </string>
<false/>
</array>
<key>3</key>
<array>
<string>Table</string>
<string> empty </string>
<true/>
</array>
</dict>
每个键有三个值。两个是字符串,一个是布尔值。我尝试了'通常的方法'用plist填充nsmutablearray所以我可以在tableview中显示它,但NSMutableArray总是空的。我先试了一下:
NSMutableArray *mutable = [[NSArray arrayWithContentsOfFile:
[[NSBundle mainBundle] pathForResource:@"myPlist" ofType:@"plist"]] retain];
然后我也尝试了这个,但它仍然返回0个对象。
NSString *path = [[NSBundle mainBundle] pathForResource:@"myPlist" ofType:@"plist"];
NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path];
NSArray *mutable = [NSArray arrayWithArray:[dict objectForKey:@"Root"]];
我总是使用字典式的plist,这是我第一个有这种结构的人,所以我觉得我做错了。顺便提一下,我提到我是菜鸟吗? :)
请帮忙。
修改 感谢Rob,我现在可以使用以下行读取数据:
NSDictionary *dogObject = [dict objectForKey:@"1"];
但是如何将数据传输到NSMutableArray以便以后编辑数据呢?或者我可以使用字典保存编辑的数据吗?
答案 0 :(得分:1)
您缺少顶级plist
标记的结束标记。我认为这是一个复制/粘贴错误。
如果在末尾添加缺少的</plist>
,那么这是一个有效的属性列表。它包含顶级字典,因此您必须将其加载到NSDictionary
,而不是NSArray
(或NSMutableArray
)。
顶级词典不包含键Root
。它包含三个键:1
,2
和3
。所以你可以从中得到一个像这样的对象:
NSDictionary *dogObject = [dict objectForKey:@"1"];