"self" используется внутри блока "catch", доступного из вызова super.init
Этот код не компилируется в Swift 3.3. Он показывает сообщение: "self" используется внутри блока "catch", доступного из вызова super.init
public class MyRegex : NSRegularExpression {
public init(pattern: String) {
do {
try super.init(pattern: pattern)
} catch {
print("error parsing pattern")
}
}
}
Что бы это могло быть?
1 ответ
Решение
Объект не полностью инициализирован, если super.init
терпит неудачу, в этом случае ваш инициализатор должен также потерпеть неудачу.
Самое простое решение было бы сделать это throw
ING:
public class MyRegex : NSRegularExpression {
public init(pattern: String) throws {
try super.init(pattern: pattern)
// ...
}
}
Или как неисправный инициализатор:
public class MyRegex : NSRegularExpression {
public init?(pattern: String) {
do {
try super.init(pattern: pattern)
} catch {
print("error parsing pattern:", error.localizedDescription)
return nil
}
// ...
}
}