我想在 UICollectionView 中显示从 viewDidLoad 中的核心数据读取的一些数据。但是,当 UICollectionView 显示其单元格时,数据尚未完全加载。因此,UICollectionView 是空的。
我想问的是如何确保在 UICollectionView 开始加载其单元格之前数据已准备好。以下是我正在处理的代码的一部分。
class MenuViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {
@IBOutlet weak var categoryCollectionView: UICollectionView!
var allDishes = [AnyObject]()
var categoryList = [String]()
let context = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let request = NSFetchRequest(entityName: self.dishItemEntityName)
var allDishes = self.context?.executeFetchRequest(request, error: nil)
if let allDishes = allDishes {
for dish in self.allDishes {
let dish = dish as! DishItem
if contains(self.categoryList, dish.category) {
continue
} else {
self.categoryList.append(dish.category)
}
}
}
}
// MARK: Delegate Methods
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return self.categoryList.count
}
}
最佳答案
viewDidLoad
在 viewWillAppear
之前调用。您可以在 viewWillAppear
中的 Collection View 上调用 reloadData
。
更好:使用 NSFetchedResultsController
,这将为内存管理、性能和自动更新带来许多其他好处。
关于ios - 当 UICollectionView 调用显示单元格时,数据未从 Core Data 完全加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32105619/