В настоящее время у меня есть UITableView
с 2 разделами, в которых используется NSFetchedResultsController
. Я пытаюсь понять, как отображать разные объекты в разных разделах. У меня есть FOLDER
объектов, а также TAG
объектов. Я хочу отобразить все это в каждом разделе, то есть в разделе 1 все FOLDER
, в разделе 2 все TAGS
.
Отношения идут: FOLDER (one to many)-> MOVIE (many to many)-> TAGS
Как мне этого добиться? Мне нужны 2 отдельных tableView
или использовать один tableView
с 2 разными запросами на выборку? Пожалуйста помоги!
РЕДАКТИРОВАТЬ: код Fetch и tableView cellForRowAt
.
private let appDelegate = UIApplication.shared.delegate as! AppDelegate
private let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
private var fetchedRC: NSFetchedResultsController<Folder>!
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
refresh()
}
private func refresh() {
do {
let request = Folder.fetchRequest() as NSFetchRequest<Folder>
request.predicate = NSPredicate(format: "name CONTAINS[cd] %@", query)
let sort = NSSortDescriptor(keyPath: \Folder.name, ascending: true)
request.sortDescriptors = [sort]
do {
fetchedRC = NSFetchedResultsController(fetchRequest: request, managedObjectContext: context, sectionNameKeyPath: nil, cacheName: nil)
fetchedRC.delegate = self
try fetchedRC.performFetch()
} catch let error as NSError {
print("Could not fetch. \(error), \(error.userInfo)")
}
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "folderCell", for: indexPath) as! FolderTableViewCell
let folder = fetchedRC.object(at: indexPath)
cell.update(with: folder)
cell.layer.cornerRadius = 8
cell.layer.masksToBounds = true
return cell
}