I am new to Core Data and I would like to organize/architecture it.
I have an object called Order that I create a table for it on xcdatamodel.
I also have a TableView that show me all Orders.
The problem is that sometimes I need a specific field from all Orders, like the newer date of all of them.
So, I have a Order Extension that import CoreData:
import CoreData
extension Order: NSFetchedResultsControllerDelegate {
func getNewerDateOrders(condition: [String]) -> [Order]? {
//I do fetch on all orders something like:
let fetchRequest: NSFetchRequest<Order> = Order.fetchRequest()
let sortDescriptor = NSSortDescriptor(key: "dateOrder", ascending: false)
fetchRequest.sortDescriptors = [sortDescriptor]
//etc etc (big logic to get the specific date)
return fetchedResultController?.fetchedObjects
}
}
The problem is that when I want to get this specific date on my OrderViewController, I try to do let orderDAO = Order()
, but I am getting this error:
error: CoreData: error: Failed to call designated initializer on NSManagedObject class 'Pedido'
CoreData: error: CoreData: error: Failed to call designated initializer on NSManagedObject class 'Pedido'
I can understand, that means I can not instantiate my NSManagedObject in my ViewController. So how can I do that? Previously I was putting this method (getNewerDateOrders) inside ViewController, but it was getting huge and messy. I would like to separate it on the right place.
Can someone help me please?