0

我有一个像这样的 plist 文件

<array>

    <array>

        <dict>

            <key>name</key>

            <string>Ryan</string>

            <key>image</key>

            <string>088i.png</string>

            <key>webSiteURL</key>

            <string>http://www.ryan.com</string>

            <key>category</key>

            <string>Monday</string>

        </dict>

    </array>

    <array>

        <dict>


            <key>name</key>

            <string>Pinky</string>
            <key>image</key>

            <string>089i.png</string>

            <key>webSiteURL</key>

            <string>http://www.pinky.com</string>

            <key>category</key>

            <string>Sunday</string>


        </dict>

        <dict>


            <key>name</key>

            <string>Kitty</string>

            <key>image</key>

            <string>098i.png</string>

            <key>webSiteURL</key>

            <string>http://www.kitty.com</string>

            <key>category</key>

            <string>Sunday</string>


        </dict>

    </array>

</array>

这个 plist 将作为 NSMutableArray 加载到 NSTableView,现在我想将数据传递给 DetailView,实际上如何获取特定数据?

我用

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([[segue identifier] isEqualToString:@"TableToWebSegue"]) {
        NormalDetailView *detailViewController = [segue destinationViewController];

        detailViewController.webSiteURL = [[_cellContentList objectAtIndex:indexPath.row] objectForKey:@"webSiteURL"]
    } }

但它说 indexPath 是错误的,应该是 NSIndexPath,我将它更改为 NSIndexPath 但它说 .row 是错误的......

这是我的第一个应用程序,我不知道在这种情况下如何获取数据,如果我想获取 webSiteURL,该怎么做?如何将其传递给详细视图?

4

1 回答 1

0

如果您的 prepareForSegue 方法位于作为主控制器的 UITableViewController 中,则只需将此行添加到您的 prepareForSegue 方法中:

 NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

然后,您可以像在帖子中一样使用 indexPath.row。

编辑后:针对您的评论,我查看了您的项目,并且在 NormalViewController 的 lis 行上发生了错误:

detailViewController.name = [[_cellContentList objectAtIndex:indexPath.row] objectForKey:@"name"];

问题是, [_cellContentList objectAtIndex:indexPath.row] 是一个 NormalCategory 对象,它没有 objectForKey: 方法。它有一个 normalList 属性,它本身有 2 个 normalData 对象,它们又具有一个“name”属性。我认为这是您要访问的名称属性,但是是哪一个?由于有 2 个 normalData 对象,您必须有一种方法来选择您想要的。在我看来,您的数据结构过于复杂和令人困惑(至少对我而言)。

于 2012-11-08T00:59:23.447 回答