我可以使用NSFetchedResultsController
获取一个实体并使用单个部分在tableview中显示数据。但是如何使用NSFetchedResultsController
获取两个或更多实体(无关系)并在不同的部分显示数据?
我注意到使用核心数据,我可以使用NSFetchedResultsController
获取部分数和行数。我在NSFetchedResultsController
中设置了一个实体,它很好地处理tableView
,包括添加和删除行。
func getFetchedResultController() - > NSFetchedResultsController {
fetchedResultController = NSFetchedResultsController(fetchRequest: fetchRequest(), managedObjectContext: managedObjectContext!, sectionNameKeyPath: nil, cacheName: nil)
fetchedResultController.delegate = self
fetchedResultController.performFetch(nil)
return fetchedResultController
}
func fetchRequest() - > NSFetchRequest {
let fetchRequest = NSFetchRequest(entityName: "Fruits")
let sortDescriptor = NSSortDescriptor(key: "desc", ascending: true)
fetchRequest.sortDescriptors = [sortDescriptor]
return fetchRequest
}
override func numberOfSectionsInTableView(tableView: UITableView) - > Int {
let section = fetchedResultController.sections ? .count
return section!
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) - > Int {
if let s = fetchedResultController.sections as ? [NSFetchedResultsSectionInfo] {
return s[section].numberOfObjects
}
return 0
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) - > UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell
let fruit = fetchedResultController.objectAtIndexPath(indexPath) as Fruits
cell.textLabel.text = fruit.desc
return cell
}
但是部分始终为零,因为它只使用一个实体。假设我想显示2个实体/表格水果和饮料(无关系),我应该将这些实体放在上面的代码中? NSFetchedResultsController
可以在tableView
的不同部分处理这些实体吗?
答案 0 :(得分:1)
使用两个 fetchedResultsControllers
,说fruitFRC
和drinksFRC
,然后将这些FRC报告的indexPath
映射到indexPath
tableView使用的。例如,如果水果要出现在tableView的第0部分中,您可以使用tableView indexPath
在fruitFRC
中查找以获取水果详细信息。但是对于饮料,在tableView的第1部分中,您需要创建一个新的indexPath
,因为drinksFRC
将使用第0部分。(您可以使用indexPathForRow:inSection:
NSIndexPath
方法创建新的indexPath。)
同样,在numberOfRowsInSection
中,如果section
为0,则返回fruitFRC
中的对象数,如果section
为1,则返回对象数在drinksFRC
。
等等......