NSExpression\NSNumber 扩展名在 Swift 3.0 中更改
NSExpression\NSNumber extension changed in Swift 3.0
对 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 "No 'tgamma' candidates produce the expected contextual result type '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)
错误:游乐场执行中止:错误:执行被中断,原因:EXC_BAD_ACCESS(代码=EXC_I386_GPFLT)。
进程一直停留在中断点,用"thread return -x"到return到表达式求值前的状态
如何正确修复扩展 NSNumber 中的第一个错误?
由
修复
extension NSNumber {
func factorialF() -> NSNumber {
return tgamma(self.doubleValue + 1) as NSNumber
}
}
所有作品都在 Swift 3.0
对 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 "No 'tgamma' candidates produce the expected contextual result type '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)
错误:游乐场执行中止:错误:执行被中断,原因:EXC_BAD_ACCESS(代码=EXC_I386_GPFLT)。 进程一直停留在中断点,用"thread return -x"到return到表达式求值前的状态
如何正确修复扩展 NSNumber 中的第一个错误?
由
修复extension NSNumber {
func factorialF() -> NSNumber {
return tgamma(self.doubleValue + 1) as NSNumber
}
}
所有作品都在 Swift 3.0