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,同時由於導致故障的動畫仍然會移除對象。