我是核心数据的新手,目前正处于我的项目的开始阶段,该项目采用了YouTube API。我想根据用户选择的类别显示视频列表。 API请求工作正常(我将其设置为每次调用每次返回20个视频)。当我删除行" fr.predicate = NSPredicate(格式:" category ==%@",self.category)"从我的fetchedResultsController构造函数,UITableView将显示我点击的上一个类别的视频,以及当前类别中的视频,因此部分中的行增加20(20,40,60 ......)。问题是,当我添加NSPredicate线时,其他一切似乎都能正常工作,除非UITableView只显示1个视频,即使API调用每次仍然返回20个视频。
这里是我如何设置fetchedResultsController
lazy var fetchedResultsController: NSFetchedResultsController = {
let fr = NSFetchRequest(entityName: "Video")
fr.sortDescriptors = [NSSortDescriptor(key: "id", ascending: true)]
fr.predicate = NSPredicate(format: "category == %@", self.category)
let fetchedResultsController = NSFetchedResultsController(fetchRequest: fr, managedObjectContext: self.context, sectionNameKeyPath: nil, cacheName: nil)
fetchedResultsController.delegate = self
return fetchedResultsController
}()
这里是UITableViewController的代码:https://github.com/leqilong/TubeCat/blob/master/TubeCat/VideosTableViewController.swift