Swift   发布时间:2022-04-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Swift 3核心数据 – NSExpression forFunction:“sum:”抛出错误(“无法将字典转换为Day”)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有日子和任务.一天有很多任务.每个任务都有一个名为“点”的属性,我想总结当天任务的所有点.我使用下面的代码(在教程中的Core Data,swift 2版本中找到)并尝试修改它为swift 3(我还添加一个谓词,但这并不重要).但是当我运行此代码时,我收到此@L_489_9@:

我究竟做错了什么?

// sum current day's task points 
    let sumrequest: NSFetchrequest<Day> = Day.fetchrequest()
    sumrequest.resultType = .DictionaryResultType

    sumrequest.preDicate = NSPreDicate(format: "SELF == %@",argumentArray: [Project.Days.current])

    let expressionDescription = NSExpressionDescription()
    expressionDescription.name = "sumOfPoints"
    expressionDescription.expression = NSExpression(forFunction: "sum:",arguments: [NSExpression(forKeyPath: "tasks.points")])
    expressionDescription.expressionResultType = .Integer16AttributeType

    sumrequest.propertiesToFetch = [expressionDescription]

    do {
        let results = try managedObject.fetch(sumrequest) as! [NSDictionary] // Here's the line that causes the error
        print("DEN:",results)
    } catch let error as NSError {
        print("DEN:",error.localizedDescription)
    }

我认为这与这一行有关:

let sumrequest: NSFetchrequest<Day> = Day.fetchrequest()

在这里,我明确地说结果将是一天(我相信这是一个新的快速3?).但我不知道如何改变这一点.

谢谢!

解决方法

解决了我的问题:

let sumrequest: NSFetchrequest<NSFetchrequestResult> = Day.fetchrequest()

我把NSFetchrequestResult放在那里,而不是放入Dayas NSFetchrequestResult.现在它正在运作.

我相信当我将它设置为不同的resultType时,它不再是[Day]返回的,所以这就是为什么我需要将其更改为更通用的东西.

大佬总结

以上是大佬教程为你收集整理的Swift 3核心数据 – NSExpression forFunction:“sum:”抛出错误(“无法将字典转换为Day”)全部内容,希望文章能够帮你解决Swift 3核心数据 – NSExpression forFunction:“sum:”抛出错误(“无法将字典转换为Day”)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。