核心数据对象更改时更新uicollectionview

时间:2016-05-16 14:21:29

标签: ios swift uicollectionview nsfetchedresultscontroller

我正在尝试将表格视图转换为集合视图。我让它显示单元格正常,但是在我离开视图/返回或滚动单元格离开屏幕之前,对它们所做的任何更改都不会显示。数据来自核心数据

正在更新第一个单元格,但其他单元格没有正确更新。如果我再次更新,它们会更新,但仅限于上次更新的值。我可以看到正在调用更新函数但是没有调用配置单元来实际更新内容,只在第一个单元格上

此处的完整代码:http://pastebin.com/BDaVS6vq

nslogs的结果给出了

  

//查看初始加载2016-05-18 15:03:38.012 Calona [1304:315892] 3。   宠物:可选(“豌豆”) - 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.宠物:可选(“悄悄话   Light“) - Exp:可选(2000)

     

//首次更新后2016-05-18 15:06:12.686 Calona [1309:316804] 1。   用户宠物:可选(“豌豆”)2016-05-18 15:06:12.698 Calona [1309:316804]   2.更新2016-05-18 15:06:12.705 Calona [1309:316804] 3.宠物:可选(“豌豆”) - Exp:可选(4000)2016-05-18 15:06:12.710   Calona [1309:316804] 3.宠物:可选(“Squi”) - Exp:可选(3000)   2016-05-18 15:06:12.714 Calona [1309:316804] 3.宠物:可选(“悄悄话   Light“) - Exp:可选(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.宠物:可选(“豌豆”) - Exp:可选(5000)2016-05-18 15:06:26.931   Calona [1309:316804] 3.宠物:可选(“Squi”) - Exp:可选(4000)   2016-05-18 15:06:26.936 Calona [1309:316804] 3.宠物:可选(“悄悄话   Light“) - Exp:可选(4000)2016-05-18 15:06:26.945   Calona [1309:316804] 1.用户宠物:可选(“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.更新

2 个答案:

答案 0 :(得分:0)

viewDidLoad的{​​{1}}中可能缺少这些行:

ViewController

并尝试使用:

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

我还定义了:

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

答案 1 :(得分:0)