Swift 2 NSData 为零

Swift 2 NSData as nil

我的应用程序在 NSData 变量中发现 nil 时有时会崩溃。当我尝试解释错误时,它说 "Value of type "NSData" can never be nil, comparation isn't allowed.

此外,我已将字段 data 初始化为 var data = NSData(),所以我无法理解 nil 的来源。

if self.data != nil {
     self.data = data!
.
.
.
}

您正在比较 self.datanil,而不是 data。因此,我怀疑您从未分配给 self.data.

您混淆了实例变量和局部变量。

  • self.data是实例变量,你定义的不是nil
  • data 是局部变量,可能是您调用的某个函数的返回值。它是 nilable(即 NSData?

如果让我猜测,您的代码将如下所示:

class MyClas {
    var data = NSData()

    func someFunction() {
        let data = anotherFunction() // This returns an NSData?
        if self.data != nil {
            ....
        }
    }
}

改成这样:

if data != nil {
    self.data = data!
}

您还可以使用可选绑定:

if let data = data {
    // data is guaranteed to be non-nil in here
    self.data = data
}