将PList信息传递给字符串,然后传递给可变数组(iOS)
问题描述:
我无法将plist文件转换为可变数组,因此我可以使用它填充表视图。我创建了一个名为MyDeals.plist的plist。我将根作为数组,然后将两个字典添加为该数组的子集,然后用字符串填充这些字典。将PList信息传递给字符串,然后传递给可变数组(iOS)
的代码如下:
NSString *myfile = [[NSBundle mainBundle] pathForResource:@"MyDeals" ofType:@"plist"];
NSLog(@"%@", myfile);
NSMutableArray *myArray = [[NSMutableArray alloc] initWithContentsOfFile:myfile];
NSLog(@"%@", myArray);
self.dealsArray = myArray;
[myArray release];
第一的NSLog注销的plist文件的正确路径,以便它工作直到那时但随后的第二数收益“(空)”,所以myArray的没有按”实际上由于某种原因从myfile获取信息。有任何想法吗?谢谢!
答
尝试首先将文件加载到NSData
中,以便您可以看到问题所在。
NSError *error;
NSData *data = [NSData dataWithContentsOfFile:myfile options:0 error:&error];
if (!data) {
NSLog(@"error loading plist from %@: %@", myfile, error);
return;
}
self.dealsArray = [NSPropertyListSerialization propertyListWithData:data
options:NSPropertyListMutableContainers format:NULL error:&error];
if (!self.dealsArray) {
NSLog(@"error parsing plist from %@: %@", myfile, error);
return;
}
答
我可能是错的,但我相信plist必须反序列化为字典而不是数组,即使根元素是数组。如果你想从一个文件desirialize数组它可能应该是一个从NSArray writeToFileAtmoically创建的文件。
它没有记录任何错误消息。 'data'不是null/undefined,也不是'self.dealsArray'(我假设至少自错误消息没有运行)。这让我更加困惑,因为self.dealsArray与myArray相等,但myArray在注销时为null。钱币。 – MillerMedia
那么这是否意味着我的代码正确设置了“self.dealsArray”?如果是这样,欢迎您。 :) –
哦,哈哈,是的。我在一分钟前试图得到一个错误消息,我没有意识到这是发生了什么。我登出了它,它效果很好。感谢Rob! – MillerMedia