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