我试图写一个核心数据实体一个简单的表格视图编辑器。不幸的是,我遇到了问题。

添加非常第一实体表中时,会出现错误。用于使向上模态对话框的方法如下:

NSManagedObjectContext *context = [fetchedResultsController managedObjectContext];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Group" inManagedObjectContext:context];
    insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];
NSManagedObject *newManagedObject = [[NSManagedObject alloc] initWithEntity:entity insertIntoManagedObjectContext:context];

NameEditController *dialog = [[NameEditController alloc] init];
dialog.managedObject = newManagedObject;
[newManagedObject release];

UINavigationController *navCtrlr = [[UINavigationController alloc] initWithRootViewController:dialog];
navCtrlr.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[[self navigationController] presentModalViewController: navCtrlr animated:YES];    
[navCtrlr release];

内部NameEditController的,我有这样完成按钮被按下后:

NSString* name = self.nameLabel.text;
[self.managedObject setValue:name forKey:@"name"];

NSError *error = nil;
if (![managedObject.managedObjectContext save:&error]) {
    NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
}
UIViewController *ctrl = [self parentViewController];
[ctrl dismissModalViewControllerAnimated:YES];

在我第一次创建一个对象(当列表为空)我得到这样的:

例外是核心数据改变处理期间捕获:[valueForUndefinedKey:]:该实体组是不关键值编码兼容的键“(空)”。

如果我填写造就对话框之前的“名称”字段中,我能够成功地添加第一个实体:

[newManagedObject的setValue:@ “新组” forKey:@ “名称”]; //这工作

我使用NSFetchedResultsController到BTW管理表视图。

谢谢!

有帮助吗?

解决方案 2

Yarr ......对不起你们,它实际上是从其他地方抄匆忙我didChangeObject:atIndexPath:forChangeType:newIndexPath:功能。显然这里抛出的异常可以得到遮蔽save:方法的内部。

其他提示

在您的第一码块,代码的第三行似乎是断章取义。如果有什么东西有可能是导致不知道。

其次,让自己的NSManagedObject成的NSManagedObjectContext从实体名称的最简单的方法是使用[NSEntityDescription insertNewObjectForEntityName:inManagedObjectContext:]。选择

所以,我会做一些事情,如:

NSManagedObjectContext *context = [fetchedResultsController managedObjectContext];
NSManagedObject *newObject = [NSEntityDescription insertNewObjectForEntityName:@"Group" inManagedObjectContext:context];

您不会需要释放NEWOBJECT了,因为[NSEntityDescription insertNewObjectForEntityName:inManagedObjectContext:]选择将与0的保留计数返回一个对象此外,请确保您有NameEditController指定其managedObject财产作为保留<。 / p>

要解决实际问题,这听起来像你可能有“名”指定为您的数据模型所需的财产?显示在你的数据模型“名”的细节的屏幕截图会有所帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top