NSExpression的init的“random”和“random:”函数(forFunction:arguments :)

时间:2015-08-09 15:20:45

标签: cocoa nsexpression

Apple's document表示函数random返回

  

NSNumber对象(随机整数值)

运行这两行代码后:

let expression = NSExpression(forFunction: "random", arguments: [])
let value: AnyObject = expression.expressionValueWithObject(nil, context: nil)

我得到的是0到1之间的数字,例如0.312047983519733。

对于函数random:,文档说它返回

  

NSNumber对象(0和数组中的值之间的随机整数值(不包括))

我尝试按照文档使用它(使用一个参数,它是一个NSArray对象,包含一个表示数字的NSExpression对象):

let expression = NSExpression(forFunction: "random:", arguments: [NSExpression(forConstantValue: 100)]) // The compiler says "Execution was interrupted, reason: signal SIGABRT"
let value: AnyObject = expression.expressionValueWithObject(nil, context: nil)

第一行甚至无法通过编译。在控制台中,它显示“由于未捕获的异常而终止应用程序'NSInternalInconsistencyException',原因:'random:不是受支持的方法。'

我不确定问题是什么。我已经尝试了所有功能 init(forFunction:arguments:),除randomrandom:外,所有内容均按照文档中的说明进行操作。

1 个答案:

答案 0 :(得分:0)

这不起作用的原因是因为randomrandomn:之间的选择器名称略有不同。请注意后者末尾的n

这应该有效

let expression = NSExpression(forFunction: "randomn:", arguments: 
[NSExpression(forConstantValue: 100)])
let value: AnyObject = expression.expressionValueWithObject(nil, context: nil)