Как выгрузить в TableView Cells значения из разных сущностей CoreData?
А потом осуществить переход с каждый cell на определенный ViewController,
в зависимости от того, какую из сущностей эта cell отображает.
Как можно переделать мой код отображения и переходов для одной сущности , на отображение нескольких сущностей и переход в другое окно в зависимости от вида сущности?
import UIKit
import CoreData
class CustomersTableViewController: UITableViewController, NSFetchedResultsControllerDelegate {
typealias Select = (Customer?) -> ()
var didSelect: Select?
var fetchedResultsController = CoreDataManager.instance.fetchedResultsController("Customer", keyForSort: "name")
override func viewDidLoad() {
super.viewDidLoad()
fetchedResultsController.delegate = self
do {
try fetchedResultsController.performFetch()
} catch {
print(error)
}
}
@IBAction func AddCustomer(_ sender: AnyObject) {
performSegue(withIdentifier: "customersToCustomer", sender: nil)
}
// MARK: - Table View Data Source
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if let sections = fetchedResultsController.sections {
return sections[section].numberOfObjects
} else {
return 0
}
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let customer = fetchedResultsController.object(at: indexPath) as! Customer
let cell = UITableViewCell()
cell.textLabel?.text = customer.name
return cell
}
// MARK: - Table View Delegate
override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
let managedObject = fetchedResultsController.object(at: indexPath) as! NSManagedObject
CoreDataManager.instance.managedObjectContext.delete(managedObject)
CoreDataManager.instance.saveContext()
}
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let customer = fetchedResultsController.object(at: indexPath) as? Customer
if let dSelect = self.didSelect {
dSelect(customer)
dismiss(animated: true, completion: nil)
} else {
performSegue(withIdentifier: "customersToCustomer", sender: customer)
}
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "customersToCustomer" {
let controller = segue.destination as! CustomerViewController
controller.customer = sender as? Customer
}
}