我正在努力学习如何从一个plist中读取...我的是一个简单的案例。我真的只想读一个整数,虽然对于更一般的数据情况我也很感激。 plist具有Item0 - Array,并且在该Item 0下有一个数字。这就是我试图读这个的方式。
plistArray = [[NSArray alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://www.website.com/count.plist"]];
//count = [[plistArray objectAtIndex:0]];
count=(int)[plistArray objectAtIndex:0];
NSLog(@"array %@\n",plistArray);
NSLog(@"count %i\n",count);
这是plist xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "apple.com/DTDs/PropertyList-1.0.dtd">
;<plist version="1.0">
<dict>
<key>Item0</key>
<array>
<integer>12</integer>
</array>
</dict>
</plist>
答案 0 :(得分:1)
你的plist有一个字典作为根对象,而不是一个数组。您应该使用URL的内容创建一个NSDictionary,然后它将包含一个数组(对于键Item0),这个数组的第一个对象将是您持有整数的NSNumber。
答案 1 :(得分:1)
我不确定你是如何创建plist的,但我认为你正在保存NSDictionary而不是NSArray。
plist中数据的结构显示根对象是字典(dict),其中包含一个键/值对。关键是“Item0”,值是我认为你正在寻找的NSArray。
试试这个:
plistDict = [[NSDictionary alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://www.website.com/count.plist"]];
NSArray * plistArray = [plistDict objectForKey:@"Item0"];
NSLog(@"array %@", plistArray);
答案 2 :(得分:1)
plist有两个问题:
;
标记前面的<plist>
不应该在那里首先,删除分号。
接下来,更新plist以仅包含<array>
元素或更新代码以首先阅读<dict>
,然后从字典中取出NSArray
:
NSDictionary *plistDict = [NSDictionary dictionaryWithContentsOfURL:url];
NSArray *plistArray = [plistDict objectForKey:@"Item0"];
int count = [(NSNumber *)[plistArray objectAtIndex:0] intValue];