Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.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/24.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
Iphone CoreData关系保存_Iphone_Objective C_Core Data - Fatal编程技术网

Iphone CoreData关系保存

Iphone CoreData关系保存,iphone,objective-c,core-data,Iphone,Objective C,Core Data,我在CoreData中建立的关系有问题。一对多,一张桌子可以有很多人,但只有一个人可以坐在一张桌子上 我的应用程序基于苹果CoreDataBooks示例 但这并不能处理人际关系。您可以在示例项目中看到“EditingViewController.m”,我也有这个,用户在其中编辑并保存对CoreData对象的选定属性的更改 假设他们选择编辑我的person实体的name属性。他们得到一个文本字段,在其中输入名称,然后点击保存按钮,完成 现在我的person实体与我的table实体有关系,但我无法正

我在CoreData中建立的关系有问题。一对多,一张桌子可以有很多人,但只有一个人可以坐在一张桌子上

我的应用程序基于苹果CoreDataBooks示例

但这并不能处理人际关系。您可以在示例项目中看到“EditingViewController.m”,我也有这个,用户在其中编辑并保存对CoreData对象的选定属性的更改

假设他们选择编辑我的person实体的name属性。他们得到一个文本字段,在其中输入名称,然后点击保存按钮,完成

现在我的person实体与我的table实体有关系,但我无法正确保存它,而且我可能还不完全理解它是如何工作的。假设他们选择编辑那个人的表,他们得到了一个UIPickerView,它咆哮着一个表列表,很好,我已经完成了这一步,我使用了一个获取请求来获取表对象并列出它们

通常设置标准属性时,在我的代码中会调用这样一行:

[EditeObject setValue:textField.text-forKey:editedFieldKey]

然而,这一次我使用的是一种关系,所以这不会起作用,对吗

因此,现在我的关系已建立,我尝试以下操作,而不是上述操作:

[tableObject addGuestObject:Person*EditeObject]

因此,从我在picker视图中填充的fetch请求中,我计算出所选的表,并获得该对象tableObject。然后,正如CoreDataBooks示例对我所做的那样,editedObject已经被传递到该视图,并且是我们正在编辑的相关人员

这就是我喜欢的地方。当然,与最后一行代码一样,我们只需获取所选的现有表对象,然后将现有来宾对象添加到其中

但这给了我这个错误和崩溃:

“NSObjectInaccessibleException”,原因:“CoreData无法实现”0x145640的故障


不完全确定如何解决此问题。

通常,“无法完成故障”表示该对象已从持久存储中删除,但您仍有对该对象的引用。发生这种情况的原因有很多:持久性存储发生了更改,对象被另一个线程删除,对象被另一个具有级联关系的对象拥有,然后被删除。我想我们需要从中获得更多关于关系的信息。

在将人员添加到表MO后是否保存上下文?尽管如此,我认为它在达到保存之前就崩溃了。我在[tableobjectaddguestobject:Person*editedObject]后面加了一个断点,它就直接崩溃了;在addGuestObject行之前尝试此操作:NSLog@%@[EditeObject类];并确保它实际上是您期望的Person对象。是的,日志返回“Person”,这是实体名称。我是否正确处理了这个问题?我是否做了正确的事情来获取现有的table和person对象,并使用创建类时自动创建的方法。结果是我使用了错误的托管对象上下文,使用正确的方法,没有问题。