0

在我的 iOS 应用程序中有一个包含两个实体的核心数据模型。

实体:单位/属性:unit_name - NSString

->> 与Exercise( one to many)的关系

实体:练习/属性:练习名称 - NSString 。

所以一个unit可以有很多exercises

在我的表视图控制器中列出了所有可用的exercises。(所以在第一次,我对Exercise实体和managedObjectContext指向该实体的点发出获取请求。

如果我想"NEW" unitexercises保存功能保存一个不起作用。完全没有错误,但unit表仍然是空的。

这是保存功能的代码:

 Units *newUnit = [NSEntityDescription insertNewObjectForEntityForName:@"Units"   inManagedObjectContext:[self.coreDataHelper managedObjectContext]];
    newUnit.unit_name = unitTextField.text;//Attribute
    newUnit.exercises = exerciseSet;//Relationship (NSSet)

    NSError *error = nil;
    if (![[self.coreDataHelper managedObjectContext]save:&error]) {
        NSLog(@"There was an error! %@", error);
    }
    else {
        NSLog(@"Success!");
    }

似乎managedObjectContext仍然指向Exercise实体。(因为它是第一次用这个实体初始化的)coreDataHelperNSPersistentStoreCoordinator, NSManagedObjectContext, theNSManagedObjectModel和一些读写和删除方法。

感谢帮助!

4

1 回答 1

0

只是为了验证一切都按照应有的方式连接,添加

NSAssert(self.coreDataHelper, @"null coreDataHelper");
NSAssert(self.coreDataHelper.managedObjectContext, @"null MOC");
NSLog(@"available entities: %@", 
    self.coreDataHelper.managedObjectContext.persistentStoreCoordinator.managedObjectModel.entitiesByName);

"Units"如果您已正确设置所有内容,您应该将其视为您的实体之一。

然后在插入 newUnit 后,验证它是否有效: NSAssert(newUnit, @"newUnit didn't get inserted");

顺便说一句,这对我来说听起来像是一个逻辑错误:每次保存时都在创建一个新的 Units 实例?您确定不想改用查找或创建模式吗?

于 2013-03-24T04:24:02.143 回答