我有一个显示原型项目网格的 NSCollectionView,这一切都通过核心数据、接口绑定和 NSValueTransformer 处理,如果不存在真实图像,则在 NSCollectionViewItem 内显示占位符图像。
当我想从 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 之间添加延迟,该延迟修复了图标的闪烁,但如果用户一次性删除一组项目,则会导致 Core Data 字段不能为 nil 错误。
在从集合视图中删除对象之前阻止占位符图像闪烁的任何想法?