当我通过表视图时,我在保持数组内容方面遇到了麻烦。我的意思是,我有一个PList,当我点击Table View中的一行时,我试图从中为Detail View绘制数据。这是我在viewDidLoad:
中的内容NSString *myfile = [[NSBundle mainBundle] pathForResource:@"MillersDeals" ofType:@"plist"];
NSError *error;
NSData *data = [NSData dataWithContentsOfFile:myfile options:0 error:&error];
self.dealsArray = [NSPropertyListSerialization propertyListWithData:data options:NSPropertyListMutableContainers format:NULL error:&error];
NSLog(@"%@", self.dealsArray);
现在我从来没有使用过NSPropertyListSerialization,直到早些时候当我建议它作为一个问题的答案。我不确定它是否会产生一系列不同的问题,或者在我可以利用其中的信息之前,它是否需要转换回字典或数组。两次NSLog都能打印出我的Plist。在didSelectRowAtIndexPath方法上,我写了这个(我试图将'image'从PList传递到我在详细视图中设置的图像字符串中):
DealsDetailViewController *dealsDetail = [[DealsDetailViewController alloc]initWithNibName:@"DealsDetailViewController" bundle:nil];
NSLog(@"%@", dealsArray);
dealsDetail.petImageString = [[NSString alloc]initWithString:[[[dealsArray objectAtIndex:indexPath.section] objectAtIndex:indexPath.row] objectForKey:@"Image"]];
dealsDetail出现错误。petImageString声明。它是错误的数据类型,我已经设置dealsArray ?
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">
<array>
<dict>
<key>Description</key>
<string>Here's the deal</string>
<key>Image</key>
<string>Frito-Lays-Jobs.png</string>
<key>Name</key>
<string>Frito-Lays</string>
<key>Thumbnail</key>
<string>dollars.png</string>
</dict>
<dict>
<key>Description</key>
<string>Here's the deal 2</string>
<key>Image</key>
<string>Frito-Lays-Jobs.png</string>
<key>Name</key>
<string>Frito-Lays 2</string>
<key>Thumbnail</key>
<string>dollars.png</string>
</dict>
</array>
这只是一些示例内容(这就是为什么有些元素是相同的)。
您展示的这个plist是一个字典数组,而不是字典数组的数组。这样的东西应该在didSelectRowAtIndexPath:
中起作用DealsDetailViewController *dealsDetail = [[DealsDetailViewController alloc]initWithNibName:@"DealsDetailViewController" bundle:nil];
dealsDetail.petImageString = [[self.dealsArray objectAtIndex:indexPath.row] objectForKey:@"Image"];
只是一个观察,但是在第一个代码片段中,您设置了'dealsArray',而在第二个代码片段中,您尝试访问'dataArray'中的信息。在什么时候'dealsArray'的内容被解析或传递到'dataArray'?您是否设置和/或访问了错误的数据结构?