Не удается передать 0 в опции NSRegularExpression?

Я получаю сообщение об ошибке:

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

когда я печатаю:

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

Ошибка уходит, если я передаю член NSRegularExpressionOptions...

Как передать параметры NSRegularExpression?

Ответ 1

В Swift 2 nil не принимается, и ошибка больше не является выходным параметром (она выбрасывается), поэтому она становится:

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

Ответ 2

Используйте nil вместо 0. NSRegularExpressionOptions - это структура, поэтому вы не можете передать целое число для этого параметра. В Objective-C параметры регулярного выражения выполнялись с перечислениями, которые оценивались с помощью ints.

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

Ответ 3

Значение 0 для типа перечисления может быть передано с пустым инициализатором

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

Ответ 4

Случай .allZeros предоставляется во многих перечислениях, поэтому вы не можете указать никаких параметров.