Core data 核心数据关系删除规则-无效+;大量
实体:Core data 核心数据关系删除规则-无效+;大量,core-data,ios5,Core Data,Ios5,实体: 录像带 播放列表项 播放列表 关系: 视频对于许多播放列表项是可选的,删除规则为nullify 播放列表是多对至少一个播放列表项目,删除规则为空 对于视频,播放列表项必须为1,并且删除规则为nullify 播放列表的播放列表项必须为1,删除规则为nullify 在Playlist实体中,我没有公开playlitem关系/设置。相反,我有一个称为“videos”的暂时未定义属性,它是通过对播放列表项集进行排序而生成的视频实体数组。播放列表和视频实体之间没有关系 在托管对象上下文中保
- 录像带
- 播放列表项
- 播放列表
- 视频对于许多播放列表项是可选的,删除规则为nullify
- 播放列表是多对至少一个播放列表项目,删除规则为空
- 对于视频,播放列表项必须为1,并且删除规则为nullify
- 播放列表的播放列表项必须为1,删除规则为nullify
视频的关系。如果关系和瞬态属性都被命名为videos
,那么肯定会有问题。为什么不在播放列表
的h文件中正常声明视频
关系,以及(而不是)您的声明(例如,视频剪辑
(瞬态数组)
此外,请确保模型中明确哪些关系是彼此相反的。如果删除块后的[[self-managedObjectContext]processPendingChanges]将为您解决奇怪的消息,请尝试
在某些情况下,当您在同一运行循环周期中继续更改托管对象上下文,并且某些涉及的对象与已删除的对象有关系时,核心数据似乎会变得混乱
问候,
sven.-processPendingChanges
对我不起作用。所做的工作是在我的NSManagedObject子类中实现-prepareForDeletion
,并手动从有问题的多对多关系中删除要删除的对象:
- (void)prepareForDeletion {
[[[self owningEntity] mutableSetValueForKey:@"ownedEntities"] removeObject:self];
}
我已经三次检查了我的数据模型,看起来还可以。我不知道为什么会产生这个错误。但这似乎至少让它消失了。使用performBlock为我修复了它:
[context performBlock:^{
// delete objects
// save context
}];
播放列表和视频之间没有关系。视频数组是根据播放列表到播放列表项目的关系生成的。我改变了措辞,使之更清楚。我只是在自己的代码中遇到了这个问题。对象删除后调用-processingPendingChanges使核心数据安静下来。我也面临同样的问题。但在添加上述方法后并没有改变,问题仍然是一样的:我也面临同样的问题。但添加上述方法后无变化,仍然发布不变:
for (FHPlaylistItem *pi in *playlistItems) {
[pi setVideo:nil];
[pi setPlaylist:nil];
[context deleteObject:pi];
}
- (void)prepareForDeletion {
[[[self owningEntity] mutableSetValueForKey:@"ownedEntities"] removeObject:self];
}
[context performBlock:^{
// delete objects
// save context
}];