我有一个tableViewController,里面有一些食物名称。 当我点击附件按钮时: - 它获取该行中的对象,打开detailViewController并传入其init方法,该方法包含所获取的食物对象的名称。
detailViewController让我编辑名称,并用委托(detailDidSaveText:(NSString *))将字符串值传回TableviewController
其委托实现中的tableViewController想要保存该值。
如果我必须创建一个新对象会很容易,我会创建一个新的managedobject并调用NSEntitydescription insertnewentityforname。
但在这种情况下我需要编辑已经存在的对象。那我怎么能这样做?
如何检索我正在编辑的对象?
(我知道正确的方法是将一个对象传递给detailVC,但我正在做一些测试以更好地学习核心数据,我也想尝试这种方式)
答案 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;
}