Swift 如何在NSexpression子查询中使用NSPredicate

Swift 如何在NSexpression子查询中使用NSPredicate,swift,Swift,如何立即获取@sum.amount请求类型==0和类型==1 它的参数看起来像blow: ------------------------ |date | Date() | ------------------------ |type | Int (0 or 1)| ------------------------ |amount | Double | ------------------------ 但是ExpenseSumeExp和IncomesExp在

如何立即获取@sum.amount请求类型==0和类型==1

它的参数看起来像blow:


------------------------
|date    | Date()      |
------------------------
|type    | Int (0 or 1)|
------------------------
|amount  | Double      |
------------------------

但是ExpenseSumeExp和IncomesExp在谓词中是错误的。

我对您一直试图实现的目标感兴趣。你成功了吗?你能发布一个解决方案吗?谢谢我对你一直试图实现的目标感兴趣。你成功了吗?你能发布一个解决方案吗?谢谢
let countExp = NSExpressionDescription()
countExp.expressionResultType = .integer32AttributeType
countExp.name = "count"
countExp.expression = NSExpression(forFunction: "count:", arguments: [NSExpression(forKeyPath: "date")])

let expendSumExp = NSExpressionDescription()
expendSumExp.expressionResultType = .doubleAttributeType
expendSumExp.name = "expendSum"
expendSumExp.expression = NSExpression(forSubquery: NSExpression(format: "@sum.amount"),usingIteratorVariable: "x",predicate: NSPredicate(format: "%K == 0", #keyPath(Record.type)))

let incomeSumExp = NSExpressionDescription()
incomeSumExp.expressionResultType = .doubleAttributeType
incomeSumExp.name = "incomeSum"
incomeSumExp.expression = NSExpression(forSubquery: NSExpression(format: "@sum.amount"),usingIteratorVariable: "x",predicate: NSPredicate(format: "%K == 1", #keyPath(Record.type)))

let request = NSFetchRequest<NSDictionary>(entityName: "Record")
request.resultType = .dictionaryResultType
request.propertiesToGroupBy = ["date"]
request.propertiesToFetch = ["date", countExp, expendSum, incomeSum]
request.predicate = NSPredicate(format: "%K BETWEEN {%@, %@}", #keyPath(Record.date), startDate, endDate)
[
{
 date: 2019-08-02,
 count: 10,
 expendSum: 200,
 incomeSum: 150
},
{
 date: 2019-08-01,
 count: 9,
 expendSum: 300,
 incomeSum: 50
},
.....
]