我是Core Data的新手,我想对其进行组织/架构。
我有一个名为Order的对象,我在xcdatamodel上为其创建了一个表。
我还有一个TableView,可以显示所有订单。
问题在于,有时候我需要所有订单中的特定字段,例如所有订单的较新日期。
因此,我有一个导入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
}
}
问题是,当我想在OrderViewController上获取此特定日期时,我尝试执行let orderDAO = Order()
,但出现此错误:
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'
我可以理解,这意味着我无法在ViewController中实例化我的NSManagedObject。那我该怎么办呢?以前,我将这种方法(getNewerDateOrders)放入ViewController中,但它变得越来越庞大且混乱。我想在正确的位置将其分开。
有人可以帮我吗?