首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSCollectionView删除ManagedObject导致NSValueTransformer运行问题

NSCollectionView删除ManagedObject导致NSValueTransformer运行问题
EN

Stack Overflow用户
提问于 2017-10-18 20:21:41
回答 1查看 107关注 0票数 0

我有一个显示原型项网格的NSCollectionView,这都是通过核心数据、接口绑定和NSValueTransformer来处理的,如果不存在实际图像,则可以在NSCollectionViewItem中显示占位符图像。

当我想从NSCollectionView中删除一个项目时,它会将它从集合视图中删除,但在它从视图中消失之前,我的占位符图像(从我的NSValueTransformer子类触发)会闪现一小段时间。

当检测到NSValueTransformer中的对象已被删除时,我找不到停止运行的方法。为什么它还在运行?

我采取的步骤是:

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

有什么办法阻止占位符图像在从集合视图中移除对象之前闪现吗?

EN

回答 1

Stack Overflow用户

发布于 2017-10-18 21:22:32

解决了它。

该问题是由于将managedObjectContext保存在for循环中造成的(上面的示例代码中没有显示)。当MOC保存时,它正在刷新collectionView,而由于导致毛刺的动画,它仍然在删除对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46810082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档