Swift 2.2: 类型 '()' 不符合协议 'BooleanType'

Swift 2.2: Type '()' does not conform to protocol 'BooleanType'

我已将 Objective-C 方法转换为 Swift。然后,在 Swift 代码中出现此错误。我没有束缚我做错了什么。

Objective-C代码

- (id)initWithCoder:(NSCoder *)aDecoder
{
    if ((self = [super initWithCoder:aDecoder])) {
        [self loadChecklistItems];
    }
    return self;
}

Swift 2.2代码

convenience required init(coder aDecoder: NSCoder) {
    if (self.init(coder: aDecoder)) {  // ERROR Here
        self.loadChecklistItems()
    }
}

Here is the screenshot of Swift code

请告诉我哪里做错了,正确的代码是什么。

直接调用初始化器即可:

convenience required init(coder aDecoder: NSCoder) {
    self.init(coder: aDecoder)
    self.loadChecklistItems()
}

但是请注意,您的代码正在无限循环调用。您确定不想致电 super.init(...) 吗?另外,我认为这不是 convenience 初始化程序:

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    self.loadChecklistItems()
}

那个初始化器是可失败的,这意味着它可以 return nil。 Swift 中可失败初始化器的语法是:

convenience required init?(coder aDecoder: NSCoder) {  // Note the question mark after init

此外,如果您从自身内部调用该初始化程序,您的代码将无限循环。我想你的意思是:

convenience required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)  // call super.init, not self.init
    self.loadChecklistItems()
}