【发布时间】:2020-04-01 04:58:45
【问题描述】:
我正在寻找一种方法来创建一个没有单元格的空白部分。 我找到了这篇文章,但是它太复杂了,无法弄清楚。here
我有两个实体,分别称为 category 和 book 每个类别可以有很多书,但也可以没有书 我怎样才能让它工作? 这是我获取数据的方式
lazy var fetchResultController: NSFetchedResultsController<Book> = {
let fetchRequest: NSFetchRequest<Book> = Book.fetchRequest()
fetchRequest.sortDescriptors = [NSSortDescriptor(key: #keyPath(Book.name), ascending: false)]
let fetchResultController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.persistentContainer.managedContext, sectionNameKeyPath: #keyPath(Book.category.name), cacheName: nil)
fetchResultController.delegate = self
return fetchResultController
}()
这是 tableView 数据源
extension MainVC: UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int {
guard let sections = fetchResultController.sections else {
return 0
}
return sections.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
guard let section = fetchResultController.sections?[section] else{return 0}
return section.numberOfObjects
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: ID.TableView.mainPage) as! BookCell
let book = fetchResultController.object(at: indexPath)
cell.nameLbl.text = book.name
return cell
}
}
这是 tableView 委托
extension MainVC: UITableViewDelegate {
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
guard let header = tableView.dequeueReusableHeaderFooterView(withIdentifier: ID.TableView.mainPageHeader) as? ProjectsHeaderView else{ return UIView() }
let section = fetchResultController.sections?[section]
header.label.text = section?.name
header.delegate = self
return header
}
}
【问题讨论】:
标签: ios swift xcode uitableview core-data