Я хотел бы использовать утверждения внутри init()
, прежде чем он называет super.init()
. Они предназначены для проверки некоторых инвариантных условий при вычислении локальных свойств.Невозможно разместить утверждения Swift внутри init() перед вызовом super.init()
Однако, если я пытаюсь место таких утверждений я получаю сообщение об ошибке:
«я» использовала до super.init вызова
Я предполагаю, что это потому, что утверждает, печатает описание объект и, следовательно, использует self
, который на этом этапе еще не полностью инициализирован. Есть ли что-нибудь, что я могу сделать с этим (то есть рассчитать локальные свойства до вызова super.init()
и разместить там там утверждения).
ОБНОВЛЕНИЕ Ниже приведен пример кратким:
class Test: NSObject {
let x: Int
override init() {
x = 1
assert(x == 1) // causes error
super.init()
assert(x == 1) // no error
}
}
Показать код, что вы пытаетесь сделать ... В то же время, читайте [Swift Утверждает] (Http: // блог .krzyzanowskim.com/2015/03/09/swift-asserts-the-missing-manual /), а также знать все альтернативы/пути ... – robertvojta
@robertvojta Я добавил пример (с тривиальной логикой инициализации). – Drux