Return 来自初始值设定项而不初始化所有存储的属性正则表达式中的错误 class
Return from initializer without initializing all stored properties Error in a Regex class
我收到此错误消息 "Return from initializer without initializing all stored properties"
class Regex {
let internalExpression: NSRegularExpression
let pattern: String
init(_ pattern: String) {
self.pattern = pattern
var error: NSError?
do {
self.internalExpression = try NSRegularExpression(pattern: pattern, options: .CaseInsensitive)
} catch {
print(error)
}
}//Error Message Goes Here
func test(input: String) -> Bool {
let matches = self.internalExpression.matchesInString(input, options: [], range:NSMakeRange(0, input.characters.count))
return matches.count > 0
}
}
如果模式无效则 NSRegularExpression(pattern: pattern, ...)
失败并抛出错误,因此 self.internalExpression
不是
初始化。您不能在不初始化所有对象的情况下创建对象
属性。
所以你必须决定如何处理这种情况。一种选择是
是使初始化器 可失败:
init?(_ pattern: String) {
self.pattern = pattern
do {
self.internalExpression = try NSRegularExpression(pattern: pattern, options: .CaseInsensitive)
} catch let error as NSError {
print(error.localizedDescription)
return nil
}
}
然后调用者必须检查是否初始化成功:
if let regex = Regex("...") {
// ...
} else {
print("could not create Regex")
}
您还可以使初始化程序 throw
ing 并转发错误:
init(_ pattern: String) throws {
self.pattern = pattern
self.internalExpression = try NSRegularExpression(pattern: pattern, options: .CaseInsensitive)
}
然后调用者必须捕获错误:
do {
let regex = try Regex("...")
// ...
} catch let error as NSError {
print("could not create regex:", error.localizedDescription)
}
最后,如果无效模式被视为编程错误
在您的程序中,然后中止无效模式的执行:
init(_ pattern: String) {
self.pattern = pattern
do {
self.internalExpression = try NSRegularExpression(pattern: pattern, options: .CaseInsensitive)
} catch let error as NSError {
fatalError("could not create regex: " + error.localizedDescription)
}
}
我收到此错误消息 "Return from initializer without initializing all stored properties"
class Regex {
let internalExpression: NSRegularExpression
let pattern: String
init(_ pattern: String) {
self.pattern = pattern
var error: NSError?
do {
self.internalExpression = try NSRegularExpression(pattern: pattern, options: .CaseInsensitive)
} catch {
print(error)
}
}//Error Message Goes Here
func test(input: String) -> Bool {
let matches = self.internalExpression.matchesInString(input, options: [], range:NSMakeRange(0, input.characters.count))
return matches.count > 0
}
}
如果模式无效则 NSRegularExpression(pattern: pattern, ...)
失败并抛出错误,因此 self.internalExpression
不是
初始化。您不能在不初始化所有对象的情况下创建对象
属性。
所以你必须决定如何处理这种情况。一种选择是 是使初始化器 可失败:
init?(_ pattern: String) {
self.pattern = pattern
do {
self.internalExpression = try NSRegularExpression(pattern: pattern, options: .CaseInsensitive)
} catch let error as NSError {
print(error.localizedDescription)
return nil
}
}
然后调用者必须检查是否初始化成功:
if let regex = Regex("...") {
// ...
} else {
print("could not create Regex")
}
您还可以使初始化程序 throw
ing 并转发错误:
init(_ pattern: String) throws {
self.pattern = pattern
self.internalExpression = try NSRegularExpression(pattern: pattern, options: .CaseInsensitive)
}
然后调用者必须捕获错误:
do {
let regex = try Regex("...")
// ...
} catch let error as NSError {
print("could not create regex:", error.localizedDescription)
}
最后,如果无效模式被视为编程错误 在您的程序中,然后中止无效模式的执行:
init(_ pattern: String) {
self.pattern = pattern
do {
self.internalExpression = try NSRegularExpression(pattern: pattern, options: .CaseInsensitive)
} catch let error as NSError {
fatalError("could not create regex: " + error.localizedDescription)
}
}