NSPropertyListSerialization不能为Table View (iOS)中的Detail View设



当我通过表视图时,我在保持数组内容方面遇到了麻烦。我的意思是,我有一个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&apos;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&apos;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'?您是否设置和/或访问了错误的数据结构?

最新更新