0

我在重新保存核心数据中的记录时遇到了麻烦,我希望有人可以帮助我了解我在这里缺少什么:

当我想保存记录时,我有我的“产品”表格视图,代码如下:

- (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”并且我知道我的最后一行不正确......我的“产品”表格视图的代表是我的“产品列表”表格视图......我已经看到了用户进入编辑模式的例子,但我只是不希望这样......我只是希望用户在欲望行中按下,修改他想要的内容并点击保存按钮......

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

提前感谢您的时间。

4

1 回答 1

0

第一点。以下行不一致:

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

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

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

  1. 您可以简单地调用[tableView reloadData]. 如果您在父视图控制器出现之前执行此操作,它甚至看起来并不难看——但这可能是一项昂贵的操作。

  2. 更好的是,您实现了NSFetchedResultsControllerDelegate提醒视图控制器管理对象发生变化的方法。在那里,您只需更新表格视图的相应行。

于 2012-11-17T10:31:53.037 回答