gpt4 book ai didi

ios - 如何执行 fetch 请求以获取带有表达式描述的参数之和?

转载 作者:搜寻专家 更新时间:2023-11-01 07:11:10 24 4
gpt4 key购买 nike

这是我的获取请求:

    let request = NSFetchRequest<Service>()
let sorter = NSSortDescriptor(key: "date", ascending: true)

let entity = NSEntityDescription()
entity.name = "Service"
request.entity = entity
request.sortDescriptors = [sorter]
request.resultType = .dictionaryResultType
request.predicate = NSPredicate(format: "month.identifier = 201703")

let exp = NSExpressionDescription()
exp.expression = NSExpression(forKeyPath: "@sum.duration")
exp.expressionResultType = .integer64AttributeType
request.propertiesToFetch = [exp]

do {
let result = try NSManagedObjectContext.mr_default().fetch(request) //error is here
print("+++++ \(result)")
} catch {
print(error)
}

但它会产生一个错误:

* Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '* -[__NSArrayM insertObject:atIndex:]: object cannot be nil'

为什么?

最佳答案

设置 NSExpressionDescription 的名称。该名称是将在字典中用于返回值的键。我更改了获取请求的结果类型,使其适用于字典类型。

    let request = NSFetchRequest<NSFetchRequestResult>()
let sorter = NSSortDescriptor(key: "date", ascending: true)

let entity = NSEntityDescription()
entity.name = "Service"
request.entity = entity
request.sortDescriptors = [sorter]
request.resultType = .dictionaryResultType
request.predicate = NSPredicate(format: "month.identifier = 201703")

let exp = NSExpressionDescription()
exp.name = "sumOfduration"
exp.expression = NSExpression(forKeyPath: "@sum.duration")
exp.expressionResultType = . integer64AttributeType
request.propertiesToFetch = [exp]

do {
let result = try UMUserDBManager.sharedInstance.getThreadManagedObjectContext().fetch(request) //error is here
print("+++++ \(result)")
} catch {
print(error)
}

}

关于ios - 如何执行 fetch 请求以获取带有表达式描述的参数之和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44858185/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com