2014-06-21 2 views
0

У меня есть этот код, работающий в Objective-Cфункции matchesInString возвращение пустого массива в Swift

NSRegularExpression* regex = [[NSRegularExpression alloc] initWithPattern:@"(.*?)(<[^>]+>|\\Z)" options:NSRegularExpressionCaseInsensitive|NSRegularExpressionDotMatchesLineSeparators error:nil]; 
NSArray* results = [regex matchesInString:text options:NSMatchingReportProgress range:NSMakeRange(0, text.length)]; 

Но Swift версия не работает. matchesInString возвращается пустой Array (используя тот же тэгами текст в обоих случаях)

let regexOptions = NSRegularExpressionOptions.CaseInsensitive | NSRegularExpressionOptions.DotMatchesLineSeparators 
let regex = NSRegularExpression.regularExpressionWithPattern("(.*?)(<[^>]+>|\\Z)", options: regexOptions, error: nil) 
var results = regex.matchesInString(markupText, options: nil, range: NSMakeRange(0, countElements(markupText))) as Array<NSTextCheckingResult> 

Даже если в документации говорится, что matchesInString возвращает Array из NSTextCheckingResult, я отметил, что в коде Objective-C (что работает) Array содержит NSSimpleRegularExpressionCheckingResult объектов, а не NSTextCheckingResult объектов. Пустой Array, о котором сообщается в версии Swift, сообщается ноль NSTextCheckingResult объектов, но

Любая идея о том, что здесь отсутствует?

ответ

4

Update, это работает для меня:

let regexOptions:NSRegularExpressionOptions? 
    = NSRegularExpressionOptions.CaseInsensitive 

var matchingError : NSError? 
let regex = NSRegularExpression(pattern: "(.*?)(<[^>]+>|\\Z)", 
    options: regexOptions!, error: &matchingError) 

let markupText = "<html></html>" 

let results = regex.matchesInString(markupText, options: nil, 
    range: NSMakeRange(0, countElements(markupText))) as Array<NSTextCheckingResult> 

Я не знаю, почему RegexOptions должен быть необязательным. Может быть ошибкой в ​​компиляторе.

Старые мысли

Это может быть ошибка в Xcode6b2. Я упростил свой пример только одну строку:

let regexOptions = NSRegularExpressionOptions.CaseInsensitive 

И я получаю эту ошибку:

fatal error: Can't unwrap Optional.None 

Я бы файл ошибка для этого.

+0

Thx для ответа ... Теперь это работает ... Кажется, что Swift все еще развивается, и все наладилось, когда мы говорим – eharo2

Смежные вопросы