无法将0传递给NSRegularExpression选项?

时间:2014-06-07 07:25:45

标签: swift

我收到了错误:

Could not find an overload for 'init' that accepts the supplied arguments

当我输入时

var expr = NSRegularExpression(pattern: "test", options: 0, error: nil)

如果我传递NSRegularExpressionOptions成员......

,则错误消失

我如何不向NSRegularExpression的init传递任何选项?

4 个答案:

答案 0 :(得分:13)

在Swift 2中nil不被接受,并且错误不再是输出参数(它被抛出),因此变为:

var expr = try NSRegularExpression(pattern: "test", options: [])

答案 1 :(得分:12)

使用nil而不是0. NSRegularExpressionOptions是一个结构,因此您无法为该参数传递整数。在Objective-C中,正则表达式选项是使用enums进行的,这些枚举被评估为整数。

var expr = NSRegularExpression(pattern: "test", options: nil, error: nil)

答案 2 :(得分:3)

枚举类型的值0可以使用空初始值设定项

传递
let expr = NSRegularExpression(pattern: "test", options: NSRegularExpressionOptions(), error: nil)

答案 3 :(得分:0)

.allZeros案例在许多枚举中提供,因此您可以指定无选项。