【问题标题】:Manual implementation of Standard Deviation with NSExpression使用 NSExpression 手动实现标准差
【发布时间】:2021-07-02 03:03:26
【问题描述】:

iOS 上Core Data 的标准差方法似乎不存在,所以我正在尝试手动操作。

我刚从NSExpression 开始,所以我正在为此苦苦挣扎:

let numbers = [4, -2]
let numbersExpr = NSExpression(forConstantValue: numbers)

let avgExpr = NSExpression(forFunction: "average:", arguments: [numbersExpr])
let subExpr = NSExpression(forFunction: "from:subtract:", arguments: [numbersExpr, avgExpr])

let v = subExpr.expressionValue(with: nil, context: nil)

在我的 subExpr 中,我试图将平均值减去我的 numbers 数组的所有值,但是在尝试评估最后一行的 v 时它崩溃了。

如何使用NSExpressions 做到这一点?

【问题讨论】:

    标签: ios core-data nsexpression


    【解决方案1】:

    崩溃的是subExpr

    let subExpr = NSExpression(forFunction: "from:subtract:", arguments: [numbersExpr, avgExpr])
    

    内置的from:subtract: 期望它的参数是“两个代表数字的NSExpression 对象”,但您的第一个参数是一个数组。

    NSExpression 的内置函数并不是真正为矢量数学设计的。使用init(block:arguments:) 可能会获得您的目标。但是,您将无法将其与 Core Data 一起使用(您的问题中未提及,但您使用了标签)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-19
      • 1970-01-01
      • 2014-02-27
      • 2014-05-09
      • 1970-01-01
      • 1970-01-01
      • 2021-12-04
      相关资源
      最近更新 更多