Swift 2 NSData为零

时间:2016-06-24 17:15:13

标签: swift2 nsdata

我的应用程序有时会在NSData变量中找到nil时崩溃。当我试图解释错误时,它说“类型值NSData”永远不能为零,不允许进行比较。

另外,我已将字段data初始化为var data = NSData(),因此我无法理解nil甚至会来自何处。

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

2 个答案:

答案 0 :(得分:1)

您要将self.datanil进行比较,而不是data。因此,我怀疑你从未分配给self.data

答案 1 :(得分:1)

您在实例变量和局部变量之间混淆。

  • self.data是实例变量,您已将其定义为nil
  • data是一个局部变量,可能是您调用的某个函数的返回值。它是可以接受的(即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
}