У меня есть Uitableview, который загружает данные из проанализированного XML-канала. при первом анализе канала все текстовые данные сохраняются в сущности NewsItems в основных данных. после загрузки таблицы изображения, связанные с каждым объектом, выбираются асинхронно и сохраняются в отдельном объекте NewsImages, после того, как каналы / изображения сохраняются локально, все данные выбираются локально при следующем запуске приложения. NewsItems и NewsImages связаны друг с другом один на один.
У меня есть кнопка обновления, которая при нажатии удаляет все записи в NewsItems, а также удаляет все объекты в NewsImages, связанные с объектами в NewsItems, так как правила удаления отношений каскадные. После удаления канал снова анализируется, и данные снова сохраняются локально.
Моя проблема в том, что я делаю это несколько раз быстро. Я получаю эту ошибку при локальном сохранении изображений.
*** 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;
}).'
Это функция, отвечающая за вставку изображений
-(void)setImage:(UIImage*)moImage ForObject:(NSManagedObjectID*)moID{
NewsItems *newsItem = (NewsItems*)[self.managedObjectContext objectWithID:moID];
NewsImages *newsImage = (NewsImages*)[NSEntityDescription insertNewObjectForEntityForName:@"NewsImages" inManagedObjectContext:self.managedObjectContext];
newsImage.Image = UIImageJPEGRepresentation(moImage,1.0);
newsItem.ItemImage = newsImage;
[self commitSave];
}