核心数据 - 获取对象

时间:2013-09-03 20:54:02

标签: ios objective-c core-data nsfetchedresultscontroller

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

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

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

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

但在这种情况下我需要编辑已经存在的对象。那我怎么能这样做?

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

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

1 个答案:

答案 0 :(得分: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;
}