ios - NSPropertyListSerialization 无法为 TableView 中的详细信息 View 设置图像字符串 (iOS)

标签 ios xcode uitableview serialization detailsview

在浏览 TableView 时,我无法保留数组的内容。我的意思是我有一个 PList,一旦我单击 TableView 中的一行,我就会尝试从中为详细 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 ok。在我写的 didSelectRowAtIndexPath 方法上(我尝试将 PList 中的“图像”传递到我在详细 View 中设置的图像字符串中):

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"];

关于ios - NSPropertyListSerialization 无法为 TableView 中的详细信息 View 设置图像字符串 (iOS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8292201/

相关文章:

iOS8 - 防止在呈现 viewController 时旋转

ios:在点击 collectionview 单元格或 tableview 单元格时禁用第二个触摸事件

ios - AddressBook 联系人搜索在大列表上很慢,如何改进?

ios - 使用 Info.plist 中的 UIRequiredDeviceCapabilities 限制兼容设备

swift - Xcode/Swift 代码折叠

ios - TableView:如何从 didSelectRowAtIndexPath 例程中选择另一行的值

ios - 我该如何解决 Could not cast value of type 'UINavigationController'

ios - 使用 UICollectionView 和 MPMediaItemArtwork 遇到内存泄漏

objective-c - 什么时候通过 iOS/Objective-C 中的代码操作屏幕控件是安全的

ios - TextInput 中的文本在 ios 上的位置不正确