簡體   English   中英

核心數據對象更改時更新uicollectionview

[英]Updating uicollectionview when core data object changes

我正在嘗試將表視圖轉換為集合視圖。 我讓它很好地顯示了單元格,但是對它們所做的任何更改都不會顯示,直到我離開視圖/回來或在屏幕外滾動單元格為止。 數據來自核心數據

第一個單元正在正確更新,而其他單元則沒有。 如果我再次更新,它們將被更新,但僅更新為先前更新的值。 我可以看到調用了update函數,但是沒有調用configure單元來實際更新內容,僅在第一個單元上

完整代碼在這里: http//pastebin.com/BDaVS6vq

nslogs的結果給出

//查看初始負載2016-05-18 15:03:38.012 Calona [1304:315892] 3. Pet:可選(“豌豆”)-Exp:可選(2000)2016-05-18 15:03:38.022 Calona [ 1304:315892] 3.寵物:可選(“ Squi”)-Exp:可選(2000年)2016-05-18 15:03:38.033 Calona [1304:315892] 3.寵物:可選(“ Whisper Light”)-Exp :可選(2000)

//在首次更新后2016-05-18 15:06:12.686 Calona [1309:316804] 1.用戶Pet:可選(“豌豆”)2016-05-18 15:06:12.698 Calona [1309:316804] 2。更新2016-05-18 15:06:12.705 Calona [1309:316804] 3.寵物:Optional(“豌豆”)-Exp:Optional(4000)2016-05-18 15:06:12.710 Calona [1309:316804] 3.寵物:可選(“ Squi”)-體驗:可選(3000)2016-05-18 15:06:12.714 Calona [1309:316804] 3.寵物:可選(“耳語燈”)-體驗:可選(3000 )2016-05-18 15:06:12.725 Calona [1309:316804] 1.用戶寵物:可選(“ Squi”)2016-05-18 15:06:12.732 Calona [1309:316804] 2.更新2016-05 -18 15:06:12.737 Calona [1309:316804] 1.用戶寵物:可選(“耳語燈”)2016-05-18 15:06:12.742 Calona [1309:316804] 2.更新2016-05-18 15 :06:12.895 Calona [1309:316804] 2.更新2016-05-18 15:06:12.895 Calona [1309:316804] 2.更新

在第二次更新后2016-05-18 15:06:26.903 Calona [1309:316804] 1.用戶寵物:可選(“豌豆”)2016-05-18 15:06:26.918 Calona [1309:316804] 2.更新2016 -05-18 15:06:26.924 Calona [1309:316804] 3.寵物:Optional(“豌豆”)-Exp:Optional(5000)2016-05-18 15:06:26.931 Calona [1309:316804] 3。寵物:可選(“ Squi”)-體驗:可選(4000)2016-05-18 15:06:26.936 Calona [1309:316804] 3.寵物:可選(“耳語燈”)-體驗:可選(4000)2016 -05-18 15:06:26.945 Calona [1309:316804] 1.用戶Pet:可選(“ Squi”)2016-05-18 15:06:26.952 Calona [1309:316804] 2.更新2016-05-18 15:06:26.958 Calona [1309:316804] 1.用戶寵物:可選(“耳語燈”)2016-05-18 15:06:26.962 Calona [1309:316804] 2.更新2016-05-18 15:06 :27.045 Calona [1309:316804] 2.更新2016-05-18 15:06:27.047 Calona [1309:316804] 2.更新2016-05-18 15:06:27.048 Calona [1309:316804] 2.更新

您的ViewControllerviewDidLoad中可能缺少這些行:

self.collectionView.dataSource = self;
self.collectionView.delegate = self;

並嘗試使用:

func controllerDidChangeContent(controller: NSFetchedResultsController) {
    self.collectionView.performBatchUpdates({ () -> Void in
        self?.blockOperation.start();
        }, completion: { (success) -> Void in
            ...
    })
}

而且我還定義了:

func controllerWillChangeContent(controller: NSFetchedResultsController) {
    self.blockOperation = NSBlockOperation();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM