如何组织核心数据模型和方法?

时间:2018-11-28 21:11:31

标签: swift core-data nsmanagedobject

我是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中,但它变得越来越庞大且混乱。我想在正确的位置将其分开。

有人可以帮我吗?

0 个答案:

没有答案