Kotlin错误的null检查警告

时间:2018-11-24 06:38:46

标签: kotlin

@IBAction func ReplyWithTextInputController(){

    let phrases = ["OK", "I'm busy.", "Where are you?", "Thanks."]

    presentTextInputController(withSuggestions: phrases,
                                    allowedInputMode: WKTextInputMode.allowEmoji, completion: { (result) -> Void in

                                        guard let choice = result else {
                                            return
                                        }
                                        let suggestion = choice[0]
                                        print(suggestion)

                        })

}

此代码将生成警告

  

条件'a.at!= null'始终为'true'

但是实际上条件'a.at!= null'总是错误的。

2 个答案:

答案 0 :(得分:2)

这已经在3年前被报道为KT-10455,“ Kotlin允许在初始化之前使用类成员,从而导致运行时异常,包括非null类型的NPE”。

要临时修复,您只需在init的{​​{1}}中交换两行,请确保在使用前已定义class A

A.at

答案 1 :(得分:0)

首先,您需要初始化变量at,然后初始化b

class A
{
    val b:B
    val at:String
    init
    {
        at="A's text"
        b=B(this)

    }
}