我有一个像这样的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,该怎么做?如何将其传递给详细视图?
答案 0 :(得分: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对象,您必须有一种方法来选择您想要的对象。在我看来,您的数据结构过于复杂和混乱(至少对我而言)。