Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.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:在核心数据中插入对象时出错_Iphone_Cocoa Touch_Xcode_Core Data - Fatal编程技术网

Iphone:在核心数据中插入对象时出错

Iphone:在核心数据中插入对象时出错,iphone,cocoa-touch,xcode,core-data,Iphone,Cocoa Touch,Xcode,Core Data,我有一个Uitableview,它从解析的xml提要加载数据。第一次解析提要时,所有文本数据都存储在核心数据中的实体NewsItems中。加载表后,异步获取与每个对象相关的图像,并将其存储在单独的实体NewsImages中,在本地存储提要/图像后,下次启动应用程序时,所有数据将在本地获取。新闻项和新闻图像之间有一对一的关系 我有一个刷新按钮,当单击该按钮时,将删除新闻项目中的所有条目,这也将删除新闻图像中与新闻项目中的对象关联的所有对象,因为关系删除规则是级联的。删除后,再次解析提要,并再次在本

我有一个Uitableview,它从解析的xml提要加载数据。第一次解析提要时,所有文本数据都存储在核心数据中的实体NewsItems中。加载表后,异步获取与每个对象相关的图像,并将其存储在单独的实体NewsImages中,在本地存储提要/图像后,下次启动应用程序时,所有数据将在本地获取。新闻项和新闻图像之间有一对一的关系

我有一个刷新按钮,当单击该按钮时,将删除新闻项目中的所有条目,这也将删除新闻图像中与新闻项目中的对象关联的所有对象,因为关系删除规则是级联的。删除后,再次解析提要,并再次在本地存储数据

我的问题是,当我快速多次这样做时。我在本地保存图像时出现此错误

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unacceptable type of value for to-one relationship: property = "ItemImage"; desired type = NewsImages; given type = NewsImages; value = <NewsImages: 0x68c49f0> (entity: NewsImages; id: 0x6804730 <x-coredata:///NewsImages/t5444BEE7-6193-4C25-8AAB-F64113BEAB7546> ; data: {
    Image = <ffd8ffe0 00104a46 49460001 01000001 00010000 ffe10058 45786966 00004d4d 002a0000 00080002 01120003 00000001 0001>;
    ImageItem = nil;
}).'

我认为最可能的问题是,在
setImage:ForObject:
中,您传递的是
newsmages
对象的objectID,而不是
newstimes
对象的objectID,在这一行:

NewsItems *newsItem = (NewsItems*)[self.managedObjectContext objectWithID:moID];
…您实际上得到了一个
新闻图像
对象,该对象以
新闻项目
的形式返回

Cast在Objective-C中可能会出现问题,因为如果您向对象发送一条它不理解的消息,那么对象在返回时不会抱怨。由于强制转换,编译器无法捕获错误

我会移除演员阵容,将返回项目设置为id,如下所示:

id newsItem=(NewsItems*)[self.managedObjectContext objectWithID:moID]

。。。然后记录其类:

NSLog(@"class=%@",[newItem class]);

。。。或者在调试器中检查它。由于您似乎正在使用自定义NSManagedObject子类,因此应该确认错误的来源

我也有同样的问题。
我通过在实体编辑器中为派生类提供一个类来修复它

以下安装程序产生了您描述的错误:

Entity name : Contact <-------- User  
ObjC Class       : Contact           Default to NSManagedObject.

实体名称:联系人您对CoreData的访问是否同步,即在同一线程上?应该是…如果不是,我如何同步它?要同步,必须从持久器中提取最新版本。在一个线程上执行。我刚刚检查过,它都发生在主线程上。这个错误是什么?我甚至都不理解它?
Entity name : Contact <-------- User  
ObjC Class       : Contact           Default to NSManagedObject.
Entity name : Contact <-------- User  
ObjC Class  : Contact           Contact