更新到 xcode 7 后出错:无法使用类型参数列表调用类型“NSRegularExpression”的初始化程序

Posted

技术标签:

【中文标题】更新到 xcode 7 后出错:无法使用类型参数列表调用类型“NSRegularExpression”的初始化程序【英文标题】:Error after updating to xcode 7 : Cannot invoke initializer for type 'NSRegularExpression' with an argument list of type 【发布时间】:2015-10-10 10:06:43 【问题描述】:

更新 xcode 后出现以下错误: “无法使用类型为 '(pattern: String, options: NilLiteralConvertible, error: NilLiteralConvertible)' 的参数列表调用类型 'NSRegularExpression' 的初始化程序”

以下是导致错误的代码:

        func applyStylesToRange(searchRange: NSRange) 
    let normalAttrs = [NSFontAttributeName : UIFont.preferredFontForTextStyle(UIFontTextStyleBody)]
    // iterate over each replacement
    for (pattern, attributes) in replacements 
        let regex = NSRegularExpression(pattern: pattern, options: nil, error: nil)!
        regex.enumerateMatchesInString(backingStore.string, options: nil, range: searchRange) 
            match, flags, stop in
            // apply the style
            let matchRange = match.rangeAtIndex(1)
            self.addAttributes(attributes, range: matchRange)

            // reset the style to the original
            let maxRange = matchRange.location + matchRange.length
            if maxRange + 1 < self.length 
                self.addAttributes(normalAttrs, range: NSMakeRange(maxRange, 1))
            
        
    

错误在这一行:- let regex = NSRegularExpression(pattern: pattern, options: nil, error: nil)! 请建议我如何解决它。

【问题讨论】:

How to use NSRegularExpression in Swift 2.0 in xcode 7的可能重复 【参考方案1】:

初始化器现在是可抛出的,需要一个选项:

do 
    let regex = try NSRegularExpression(pattern: "YouPattern", options: NSRegularExpressionOptions.CaseInsensitive)
 catch 
    print(error)

【讨论】:

嗨@joern:我试过你的解决方案,它对我有用,但现在我在这一行遇到错误:“regex.enumerateMatchesInString(backingStore.string, options: nil, range: searchRange)” .你能帮我根据swift 2解决这个代码吗? 那是因为选项不能再是nil,你必须选择一个选项。【参考方案2】:

检查一个新的初始化程序

public init(pattern: String, options: NSRegularExpressionOptions) throws

这意味着现在您必须传递一个options 参数并准备好捕捉错误。示例:

do 
    let regex = try NSRegularExpression(pattern: "pattern", options: .CaseInsensitive)
 catch 
    print(error)

【讨论】:

以上是关于更新到 xcode 7 后出错:无法使用类型参数列表调用类型“NSRegularExpression”的初始化程序的主要内容,如果未能解决你的问题,请参考以下文章

更新到 Xcode7-beta4 后,无法在属性检查器中设置 UITableView 的 backgroundColor 属性

将 Xcode 6 beta 6 更新到 beta 7 后出现“可选错误”

Xcode 7.3 无法将应用程序安装到 iPhone

将 xcode 更新到 9.4 后,react native ios build 失败。错误是“NSInteger”类型的值

无法使用类型为“(NSURL,*:NSString?)”的参数列表调用“*”

更新到 Xcode 12:无法将类型“DataRequest”的值转换为闭包结果类型“Void”