[英]Updating uicollectionview when core data object changes
I'm trying to convert a table view to a collection view. 我正在尝试将表视图转换为集合视图。 I have it display the cells fine but any changes made to them aren't being displayed until i leave the view/come back or scroll the cell off screen.
我让它很好地显示了单元格,但是对它们所做的任何更改都不会显示,直到我离开视图/回来或在屏幕外滚动单元格为止。 The data comes from core data
数据来自核心数据
The first cell is being update correctly, but the other cells aren't. 第一个单元正在正确更新,而其他单元则没有。 If i update again, they get updated but only to the value of the previous update.
如果我再次更新,它们将被更新,但仅更新为先前更新的值。 I can see the update function being called but the configure cell isn't being called to actually update the contents, only on the first cell
我可以看到调用了update函数,但是没有调用configure单元来实际更新内容,仅在第一个单元上
Full code here: http://pastebin.com/BDaVS6vq 完整代码在这里: http : //pastebin.com/BDaVS6vq
The results of the nslogs give nslogs的结果给出
// View initial load 2016-05-18 15:03:38.012 Calona[1304:315892] 3. Pet: Optional("Pea") - Exp: Optional(2000) 2016-05-18 15:03:38.022 Calona[1304:315892] 3. Pet: Optional("Squi") - Exp: Optional(2000) 2016-05-18 15:03:38.033 Calona[1304:315892] 3. Pet: Optional("Whisper Light") - Exp: Optional(2000)
//查看初始负载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)
// After first update 2016-05-18 15:06:12.686 Calona[1309:316804] 1. User Pet: Optional("Pea") 2016-05-18 15:06:12.698 Calona[1309:316804] 2. Update 2016-05-18 15:06:12.705 Calona[1309:316804] 3. Pet: Optional("Pea") - Exp: Optional(4000) 2016-05-18 15:06:12.710 Calona[1309:316804] 3. Pet: Optional("Squi") - Exp: Optional(3000) 2016-05-18 15:06:12.714 Calona[1309:316804] 3. Pet: Optional("Whisper Light") - Exp: Optional(3000) 2016-05-18 15:06:12.725 Calona[1309:316804] 1. User Pet: Optional("Squi") 2016-05-18 15:06:12.732 Calona[1309:316804] 2. Update 2016-05-18 15:06:12.737 Calona[1309:316804] 1. User Pet: Optional("Whisper Light") 2016-05-18 15:06:12.742 Calona[1309:316804] 2. Update 2016-05-18 15:06:12.895 Calona[1309:316804] 2. Update 2016-05-18 15:06:12.895 Calona[1309:316804] 2. Update
//在首次更新后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.更新
After second update 2016-05-18 15:06:26.903 Calona[1309:316804] 1. User Pet: Optional("Pea") 2016-05-18 15:06:26.918 Calona[1309:316804] 2. Update 2016-05-18 15:06:26.924 Calona[1309:316804] 3. Pet: Optional("Pea") - Exp: Optional(5000) 2016-05-18 15:06:26.931 Calona[1309:316804] 3. Pet: Optional("Squi") - Exp: Optional(4000) 2016-05-18 15:06:26.936 Calona[1309:316804] 3. Pet: Optional("Whisper Light") - Exp: Optional(4000) 2016-05-18 15:06:26.945 Calona[1309:316804] 1. User Pet: Optional("Squi") 2016-05-18 15:06:26.952 Calona[1309:316804] 2. Update 2016-05-18 15:06:26.958 Calona[1309:316804] 1. User Pet: Optional("Whisper Light") 2016-05-18 15:06:26.962 Calona[1309:316804] 2. Update 2016-05-18 15:06:27.045 Calona[1309:316804] 2. Update 2016-05-18 15:06:27.047 Calona[1309:316804] 2. Update 2016-05-18 15:06:27.048 Calona[1309:316804] 2. Update
在第二次更新后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.更新
It's possible that are missing these lines in the viewDidLoad
of your ViewController
: 您的
ViewController
的viewDidLoad
中可能缺少这些行:
self.collectionView.dataSource = self;
self.collectionView.delegate = self;
and try to use : 并尝试使用:
func controllerDidChangeContent(controller: NSFetchedResultsController) {
self.collectionView.performBatchUpdates({ () -> Void in
self?.blockOperation.start();
}, completion: { (success) -> Void in
...
})
}
and I also defined: 而且我还定义了:
func controllerWillChangeContent(controller: NSFetchedResultsController) {
self.blockOperation = NSBlockOperation();
}
used the code available here and its working 使用了这里可用的代码及其工作方式
https://gist.githubusercontent.com/jonzhan/e821b7c7fbd13f736768/raw/b84db699779a383506704ecc92814a185502a69f/UICollection%2520and%2520NSFetchedResultsControllerDelegate%2520integration.swift https://gist.githubusercontent.com/jonzhan/e821b7c7fbd13f736768/raw/b84db699779a383506704ecc92814a185502a69f/UICollection%2520and%2520NSFetchedResultsControllerDelegate%2520integration.swift
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.