0

我有一个 tableViewController,里面有一些食物名称。当我单击附件按钮时: - 它获取该行中的对象,打开一个 detailViewController 并传入其 init 方法,该字符串包含获取的食物对象的名称。

detailViewController 让我编辑名称,并通过委托( detailDidSaveText:(NSString *) )将字符串值传回给 TableviewController

它的委托实现中的 tableViewController 想要保存该值。

如果我必须创建一个新对象会很容易,我会创建一个新的托管对象并调用 NSEntitydescription insertnewentityforname。

但在这种情况下,我需要编辑一个已经存在的对象。那我该怎么做呢?

如何检索我正在编辑的对象?

(我知道正确的方法是将对象传递给detailVC,但我正在做一些测试以更好地学习核心数据,我也很想尝试这种方式)

4

1 回答 1

1

存储对对象的引用

@property (nonatomic) Food *foodItemToEdit;

并在点击附件按钮时设置属性

- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
{
    self.foodItemToEdit = [self.fetchedResultsController objectAtIndexPath:indexPath];
}

然后在你的委托方法中,如果 objectToEdit 存在,如果它不存在,则创建你的食物,然后设置它的文本。

- (void)detailDidSaveText:(NSString *)text
{
    if (self.foodItemToEdit == nil) {
        self.foodItemToEdit = [NSEntityDescription insertNewObjectForEntityForName:@"Food" inManagedObjectContext:self.context];
    }
    self.foodItemToEdit.text = text;
}
于 2013-09-03T21:33:16.480 回答