NSCollectionView删除ManagedObject导致NSValueTransformer运行问题
问题描述:
我有一个NSCollectionView显示原型项目的网格,这是所有通过核心数据,接口绑定和NSValueTransformer处理,以显示NSCollectionViewItem中的占位符图像,如果没有真实图像存在。NSCollectionView删除ManagedObject导致NSValueTransformer运行问题
当我想从NSCollectionView中删除一个项目时,它将它从集合视图中删除,但在占位符图像从我的NSValueTransformer子类中触发后,在视图消失之前持续一个微秒。
我找不到一种方式来停止NSValueTransformer运行,当它检测到MOC中的对象已被删除。为什么它还在运行?
我采取的步骤如下:
for (MyEntityClass * obj in [myArrayController selectedObjects]) {
[myArrayController removeObject: obj]; // This on its own works fine.
[managedObjectContext deleteObject: obj]; // This causes a flash
}
如果我只是删除从MOC的对象(不脱离arrayController除去)其闪烁用于微第二占位符图像。
有没有办法阻止删除的MOC对象导致CollectionView运行NSValueTransformer从视图中删除它之前?
我试着在ArrayController removeObject和MOC deleteObject之间添加一个延迟,它修复了图标的闪烁,但是如果用户一次性删除一组项目,则会导致核心数据字段不能为零错误。
在将对象从集合视图中删除之前停止占位符图像闪烁的任何想法?
答
解决了它。
问题是由于在for循环中保存了managedObjectContext(未在上面的示例代码中显示)。当MOC保存时,它正在刷新collectionView,同时由于导致故障的动画仍然会移除对象。