修改核心数据中的记录而无需编辑模式

时间:2012-11-17 02:03:23

标签: core-data nsmanagedobject nsmanagedobjectcontext

我在重新保存核心数据中的记录时遇到了麻烦,我正在跳楼,有人可以帮我理解我在这里缺少的内容:

当我想要保存记录时,我的“产品”表格视图中包含以下代码:

- (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 ...我已经看到用户进入编辑模式的示例,但我不想要...我只是希望用户按下欲望行,修改他想要的内容并点击保存按钮..

我错过了什么,我在这里失去了几个小时......任何人都可以帮助我吗?

先谢谢你的时间。

1 个答案:

答案 0 :(得分:0)

第一点。以下行不一致:

X *object = (Y*) [fetchedResultsController objectAtIndexPath:indexPath]; 

X应该是您需要的类,(Y*)可以省略,因为应该自动返回正确的对象类型。

二。保存新实体属性后,有两种方法可以显示更改。

  1. 您只需致电[tableView reloadData]即可。如果你在父视图控制器出现之前这样做,它甚至看起来都不丑 - 但这可能是一项昂贵的操作。

  2. 更好的是,您实现了NSFetchedResultsControllerDelegate方法,以警告视图控制器对托管对象的更改。您只需更新表格视图的相应行。