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 にエラーがあります。
私はこのエラーを修正しましたが、新しいものを取得します
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" を使用します。
拡張 NSNumber の最初のエラーをどのように修正しますか?