【问题标题】:How to process CoreData Swift 4.2如何处理 CoreData Swift 4.2
【发布时间】:2019-10-09 13:44:33
【问题描述】:

我有以下实体和关系:

我想做一个计算: 我想获取特定类别的所有收据的金额并将它们相加。

例如: 我想检索“餐厅”类别的所有收据的总金额

如何使用 Swift 4.2 做到这一点?

【问题讨论】:

    标签: swift xcode core-data swift4.2


    【解决方案1】:

    例如,简单地获取一个字典数组,获取值并将它们相加

    let request : NSFetchRequest<NSDictionary> = NSFetchRequest(entityName: "Receipt")
    request.resultType = .dictionaryResultType
    request.propertiesToFetch = ["amount"]
    request.predicate = NSPredicate(format: "toCategory.category == %@", "Restaurant")
    do {
        let objects = try managedObjectContext.fetch(request) as! [[String:Int]]
        let sum = objects.compactMap{$0["amount"]}.reduce(0, +)
    } catch { print(error) }
    

    【讨论】:

    • 这向我展示了许多错误:第 2 行:预期的声明。第 5 行:使用未解析的标识符“managedObjectContext”;你的意思是“NSManagedObjectContext”吗?第 6 行:类型“StatisticsViewController”没有成员“对象”
    • 当然要导入CoreData,managedObjectContext是Core Data栈的NSManagedObjectContext实例,try行应该被包裹在do - catch块中,整个代码必须在方法内..
    • 对不起,我是一个应用程序开发的初学者:(。我无法得到你的解释。你能在代码中解释更多吗?我不知道如何使用 do - catch
    • 它仍然给我这个错误:使用未解析的标识符'managedObjectContext';你的意思是“NSManagedObjectContext”吗?我已经导入了 CoreData。
    • 正如我所说,您需要引用核心数据堆栈的NSManagedObjectContext 实例。它通常在 AppDelegate 中,但可以在任何地方。
    猜你喜欢
    • 1970-01-01
    • 2012-05-20
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多