我正在将基于CoreText的应用程序转换为
Swift,并且在将匹配项添加到文本中的正则表达式时遇到问题.
这是示例代码
let regexOptions = NSRegularExpressionOptions.CaseInsensitive | NSRegularExpressionOptions.DotMatchesLineSeparators let regex = NSRegularExpression.regularExpressionWithPattern("(.*?)(<[^>]+>|\\Z)",options: regexOptions,error: nil) var results: Array<NSTextCheckingResult> = regex.matchesInString(text,options: 0,range: NSMakeRange(0,countElements(text)))
根据文档,matchesInString函数返回一个NSTextCheckingResults数组,但编译器抱怨说“anyObject []类型的表达式不能转换为”NSMatchingOptions“.任何可能出错的想法?
解决方法
尝试分配到您的结果变量,如下所示:
var results = regex.matchesInString(text,options:nil,range:NSMakeRange(0,countElements(text)))as Array< NSTextCheckingResult>
>返回类型是Array< AnyObject> []!,当您检查集合的成员时,可以在此处(如上例所示)或以后进行转换>在Swift选项中,使用nil表示空选项集(在Objective-C中为0)