0

我有一个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之间添加一个延迟,它修复了图标的闪烁,但是如果用户一次性删除一组项目,则会导致核心数据字段不能为零错误。

在将对象从集合视图中删除之前停止占位符图像闪烁的任何想法?

回答

0

解决了它。

问题是由于在for循环中保存了managedObjectContext(未在上面的示例代码中显示)。当MOC保存时,它正在刷新collectionView,同时由于导致故障的动画仍然会移除对象。