Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.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
在IOS中,使用NSManagedObject作为类成员的正确设计是什么?_Ios_Objective C_Nsmanagedobject - Fatal编程技术网

在IOS中,使用NSManagedObject作为类成员的正确设计是什么?

在IOS中,使用NSManagedObject作为类成员的正确设计是什么?,ios,objective-c,nsmanagedobject,Ios,Objective C,Nsmanagedobject,快一点。我正在制作一个包含许多子类的数据对象。所有这些都只是数据容器 我正在使用托管对象上下文,我很好奇是应该让每个子类都从NSManagedObject继承,还是只让我的根类继承 我询问的原因是,我的AppDelegate中有一个在启动时初始化的根对象的空白副本,在安装向导样式的表单集期间用作临时副本。在每一步之后,我创建一个子类对象并用表单中的数据填充其类成员,然后再移动到下一个表单 现在,在表单1上提交时,我正在创建子类fine,但是如果我尝试在app委托中设置根类的字段,我会得到一个内存

快一点。我正在制作一个包含许多子类的数据对象。所有这些都只是数据容器

我正在使用托管对象上下文,我很好奇是应该让每个子类都从NSManagedObject继承,还是只让我的根类继承

我询问的原因是,我的AppDelegate中有一个在启动时初始化的根对象的空白副本,在安装向导样式的表单集期间用作临时副本。在每一步之后,我创建一个子类对象并用表单中的数据填充其类成员,然后再移动到下一个表单

现在,在表单1上提交时,我正在创建子类fine,但是如果我尝试在app委托中设置根类的字段,我会得到一个内存异常

我正在保存有关汽车的基本细节,并将其保存到有关汽车设置(如轮胎)的完整细节列表中

而且

        [appDelegate.tempSetup setCar:theCar];

给出的错误是
[SetupSheet setCar:]:未识别的选择器发送到实例
,我认为这可能与指向“theCar”的指针有关?

,因此我已设法自己找出一些更改:)

我所做的是:

  • 回到数据模型,确保我的实体符合要求
  • 根据“新建文件向导”中的数据模型创建“新建文件”
  • 在my App Delegate中,创建SetupSheet对象的实例并将其添加到
    ManagedObjectContext
  • 在SetupSheet中,我重写了
    awakafterinsert()
    函数,为存储在SetupSheet中的每个子类创建新对象
  • 最后,在
    awakafterinsert()
    函数的末尾,我将这些新对象分配给SetupSheet的类字段
我在AppDelegate中的Insert-Into-Context调用之后设置了一个断点,并对SetupSheet对象进行了打印输出,确保所有字段都显示为nil(因为未设置),但所有子类的内存位置都已创建且有效

记住在对模型进行任何更改后,从模拟器或设备中删除应用程序

        [appDelegate.tempSetup setCar:theCar];