2014-02-10 61 views
0

我有一個UITableView其中每個部分包含一個單行,其中每個包含一個UICollectionView。 UITableView是數據源並委派給Core Data數據庫。更新數據庫調用NSFetchedResultsController的控制器:didChangeObject:哪個隊列塊方法來更新相關的收集像這樣:解析NSBlockOperation的executionBlocks

switch (type) { 
    case NSFetchedResultsChangeInsert: { 
     [self.blockOperation addExecutionBlock:^{ 
      [collectionView insertSections:[NSIndexSet indexSetWithIndex:newIndexPath.section] ]; 
     }]; 
    break; 
}... 

話,我想在這裏執行塊作爲批處理:

- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller 
{ 
    [collectionView performBatchUpdates:^{ 
     [self.blockOperation start]; 
    } completion:^(BOOL finished) { 
     // Do whatever 
    }]; 
} 

這正在使用Ash Furrow和Blake Watters的techniques將核心數據庫連接到UICollectionView。

我的問題是,我如何獲得訪問正確的-controllerdidChangeContent: collectionView對象? self.blockOperation中的每個塊都有相關的collectionView,但我不知道如何從NSBlockOperation的executionBlocks屬性解析出它,或者即使這是最好的解決方法。 Ash和Blake的例子只有一個UICollectionView,而我有很多。

回答

1

您不希望僅使用單個塊操作,因爲之後您將無法分離數據。相反,對每個集合視圖使用一個塊操作(每個部分也是這樣)。將每個字典添加到關聯索引路徑作爲關鍵字的字典中(檢查它是否已存在並根據需要創建/更新)。在運行塊時,迭代字典,獲取索引路徑(鍵)的集合視圖並運行塊操作(值)。