gpt4 book ai didi

swift - Swift 3.0 中的 NSExpression\NSNumber 扩展名已更改

转载 作者:行者123 更新时间:2023-11-30 13:05:01 24 4
gpt4 key购买 nike

对 NSNumber 进行一些扩展:

extension NSNumber {
func factorialF() -> NSNumber {
return tgamma(self.doubleValue + 1)
}
}

然后我在计算中使用这个扩展

var stringFunction: String = "FUNCTION(10,'factorialF')"
var expn: NSExpression = NSExpression(format: stringFunction)
var result = expn.expressionValueWithObject(with: nil, context: nil)

在 Xcode 7.3.1 和 Swift 2.2 中一切正常,但在 Xcode 8 和 Swift 3.0 中,我的扩展 NSNumber 中出现一些错误“没有‘tgamma’候选者产生预期的上下文结果类型‘NSNumber’”

我修复了这个错误,但得到了新的

extension NSNumber {
func factorialF() -> Double {
return tgamma(self.doubleValue + 1)
}
}
var stringFunction: String = "FUNCTION(10,'factorialF')"
var expn: NSExpression = NSExpression(format: stringFunction)
var result = expn.expressionValue(with: nil, context: nil)

我在这里遇到了新错误

var result = expn.expressionValue(with: nil, context: nil)

错误:Playground 执行中止:错误:执行被中断,原因:EXC_BAD_ACCESS(代码=EXC_I386_GPFLT)。进程已留在中断点,使用“thread return -x”返回到表达式求值之前的状态。

如何正确修复扩展 NSNumber 中的第一个错误?

最佳答案

修复

extension NSNumber {
func factorialF() -> NSNumber {
return tgamma(self.doubleValue + 1) as NSNumber
}
}

所有内容都适用于 Swift 3.0

关于swift - Swift 3.0 中的 NSExpression\NSNumber 扩展名已更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39493898/

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