如何从托管对象上下文转到表视图行?

时间:2012-08-06 01:51:24

标签: objective-c ios uitableview core-data

我有UITableView,使用CoreData SQLLite数据源和NSManagedObjectContext

请原谅我,如果我没有弄清楚这个术语是正确的,因为我现在只有这几天了,所以我只是在学习。

我刚刚完成设置模态视图,让我向数据源添加新项目。所以,我现在的逻辑基本上是:将项目添加到数据源,刷新表格视图,我现在可以看到我的新项目了。

我想更进一步,然后执行我设置的segue,然后在点击任何项目的UITableViewCell时发生。所以我将使用performSegueWithIdentifier:sender方法在代码中启动segue。但发件人必须是UITableViewCell

所以,考虑到我拥有的东西,我有我刚刚添加到数据源的数据,但不知道数据源中新项目的索引。我需要使用该数据来找到新创建的项目的UITableViewCell

关于如何做到这一点的任何想法?我一直在环顾四周,我没有看到任何看起来像我期待看到的示例代码。

下面是我的代码,用于将新项目从我的模态视图添加到数据源:

#pragma mark - ComposeThreadViewControllerDelegate Methods

- (void)composeThreadViewController:(ComposeThreadViewController *)controller didFinishComposing:(Thread *)thread {

    // get the context
    NSManagedObjectContext *context = [(id)[[UIApplication sharedApplication] delegate] managedObjectContext];

    // add this new thread to our local cache
    NSManagedObject *managedThread = [NSEntityDescription insertNewObjectForEntityForName:@"Thread" inManagedObjectContext:context];

    [managedThread setValue:thread.id forKey:@"id"];
    [managedThread setValue:thread.title forKey:@"title"];
    [managedThread setValue:thread.author forKey:@"author"];
    [managedThread setValue:thread.text forKey:@"text"];
    [managedThread setValue:thread.location forKey:@"location"];

    //save the new thread
    [context save:nil];

    // begin refreshing the list of threads
    [self.tableView reloadData];

    // dismiss the modal view
    [self dismissModalViewControllerAnimated:YES];

    // bring up the view item view
    [self performSegueWithIdentifier:@"viewThreadSegue" sender:self];

}

2 个答案:

答案 0 :(得分:1)

为什么需要对象的索引路径?这是表视图的实现细节,它管理对象的表示。

如果您需要该对象,为什么不将托管对象作为发件人传递?

[self performSegueWithIdentifier:@"viewThreadSegue" sender:managedThread];

现在,在您的performSeque中,您可以将托管对象传递给视图控制器。无需使用与您正在执行的操作不自然的索引路径污染所有代码。

注意:您可以询问对象的托管对象上下文...

managedThread.managedObjectContext

答案 1 :(得分:0)

据我所知,为Mac OS X学习cocoa,您不需要实现数据源协议。您只需将数组控制器拖到界面构建器,在身份检查器中将模式设置为实体名称,然后键入您创建的数据源实体的名称。此后,您只需将表视图的每一列绑定到要表示的数组控制器的键。