Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
一个managedObjectContext的iOS多个实体_Ios_Core Data_Entity_Managedobjectcontext - Fatal编程技术网

一个managedObjectContext的iOS多个实体

一个managedObjectContext的iOS多个实体,ios,core-data,entity,managedobjectcontext,Ios,Core Data,Entity,Managedobjectcontext,在我的iOS应用程序中有一个包含两个实体的核心数据模型 实体:单位/属性:单位名称-NSString ->>与练习的关系(一对多) 实体:练习/属性:练习名称-NSString。 因此一个单元可以有许多练习 在我的表格视图中,列出了所有可用的练习。 (因此,第一次,我为练习实体发出了一个获取请求,managedObjectContext指向该实体 如果我想用练习保存“新建”装置,则保存功能不起作用。 没有任何错误,但是单元表仍然为空 以下是保存功能的代码: Units *newUnit = [

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

实体:单位/属性:单位名称-NSString

->>与
练习的关系
一对多

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

因此一个
单元
可以有许多
练习

在我的表格视图中,列出了所有可用的
练习。
(因此,第一次,我为
练习
实体发出了一个获取请求,
managedObjectContext
指向该实体

如果我想用
练习保存
“新建”
装置
,则保存功能不起作用。 没有任何错误,但是
单元
表仍然为空

以下是保存功能的代码:

 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
仍然指向
练习
实体。(因为它是第一次使用此实体初始化的)
coreDataHelper
具有
NSPersistentStoreCoordinator
、NSManagedObjectContext
、NSManagedObjectModel
以及一些读写和删除方法


感谢您的帮助!

为了验证所有东西都按应有的方式连接,请添加

NSAssert(self.coreDataHelper, @"null coreDataHelper");
NSAssert(self.coreDataHelper.managedObjectContext, @"null MOC");
NSLog(@"available entities: %@", 
    self.coreDataHelper.managedObjectContext.persistentStoreCoordinator.managedObjectModel.entitiesByName);
如果一切设置正确,您应该将
“单位”
视为您的实体之一

然后在插入newUnit后,验证它是否工作: NSAssert(newUnit,@“newUnit未插入”)


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

您是否怀疑输入错误,或者您的代码是否有“Units”在insertNewObjectForEntityName方法中,当您说您的实体是Unit时?将保存包含上下文的任何实体。请确保self.coreDataHelper不为null,并且您正在正确地将其传递给当前控制器。