我在重新保存核心数据中的记录时遇到了麻烦,我正在跳楼,有人可以帮我理解我在这里缺少的内容:
当我想要保存记录时,我的“产品”表格视图中包含以下代码:
- (IBAction)save:(id)sender
{
MyCoreDataClass *productOne = [NSEntityDescription insertNewObjectForEntityForName:@"MyCoreDataClass" inManagedObjectContext:self.managedObjectContext];
productOne.reference = reference.text;
productOne.type = type.text;
productOne.cost = cost.text;
[self.managedObjectContext save:nil];
[self dismissModalViewControllerAnimated:YES];
}
正如您已经了解的那样,我有一个“产品列表”表视图,其中所有记录都被很好地显示/保存,并且在我的“产品列表”didSelectRowAtIndexPath方法中,我已经完成了这个:(我不使用segues!)
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
MyCoreDataClass *produtoSelected = (Lista *)[[self fetchedResultsController] objectAtIndexPath:indexPath];
if ([produtoSelected.reference isEqualToString:@"shirts"]||[produtoSelected.reference isEqualToString:@"pants"] )
{
Product *example=(Product *)[self.storyboard instantiateViewControllerWithIdentifier:@"ProductId"];
produto.modalPresentationStyle = UIModalPresentationFormSheet;
produto.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:example animated:YES];
produto.view.superview.frame = CGRectMake(0, 0, 350, 510); //do this after presentModalViewController
example.view.superview.center = self.view.center;
example.reference.text = produtoSelected.reference;
example.type.text = produtoSelected.type;
example.cost.text = produtoSelected.cost;
example.managedObjectContext = self.managedObjectContext;
[self.tableView deselectRowAtIndexPath:indexPath animated:YES];
}
显示之前保存的信息,之后我已经尝试了“self.managedObjectContext refreshObject”,我知道我的最后一行不正确...我的“Product”tableview的委托是我的“Product List”tableview ...我已经看到用户进入编辑模式的示例,但我不想要...我只是希望用户按下欲望行,修改他想要的内容并点击保存按钮..
我错过了什么,我在这里失去了几个小时......任何人都可以帮助我吗?
先谢谢你的时间。
答案 0 :(得分:0)
第一点。以下行不一致:
X *object = (Y*) [fetchedResultsController objectAtIndexPath:indexPath];
X
应该是您需要的类,(Y*)
可以省略,因为应该自动返回正确的对象类型。
二。保存新实体属性后,有两种方法可以显示更改。
您只需致电[tableView reloadData]
即可。如果你在父视图控制器出现之前这样做,它甚至看起来都不丑 - 但这可能是一项昂贵的操作。
更好的是,您实现了NSFetchedResultsControllerDelegate
方法,以警告视图控制器对托管对象的更改。您只需更新表格视图的相应行。