将PList信息传递给字符串,然后传递给可变数组(iOS)

将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; 
} 
+0

它没有记录任何错误消息。 'data'不是null/undefined,也不是'self.dealsArray'(我假设至少自错误消息没有运行)。这让我更加困惑,因为self.dealsArray与myArray相等,但myArray在注销时为null。钱币。 – MillerMedia

+0

那么这是否意味着我的代码正确设置了“self.dealsArray”?如果是这样,欢迎您。 :) –

+0

哦,哈哈,是的。我在一分钟前试图得到一个错误消息,我没有意识到这是发生了什么。我登出了它,它效果很好。感谢Rob! – MillerMedia

我可能是错的,但我相信plist必须反序列化为字典而不是数组,即使根元素是数组。如果你想从一个文件desirialize数组它可能应该是一个从NSArray writeToFileAtmoically创建的文件。