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] が objectForKey: メソッドを持たない NormalCategory オブジェクトであることです。これには normalList プロパティがあり、それ自体に 2 つの normalData オブジェクトがあり、さらに「name」プロパティがあります。あなたが取得しようとしている名前のプロパティだと思いますが、どのプロパティですか? 2 つの normalData オブジェクトがあるため、必要な方を選択する方法が必要です。あなたのデータ構造は非常に複雑で紛らわしいようです(少なくとも私には)。

于 2012-11-08T00:59:23.447 に答える