【问题标题】:Swift 2 NSData as nilSwift 2 NSData 为零
【发布时间】:2016-06-24 17:15:12
【问题描述】:

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

另外,我已经将data 字段初始化为var data = NSData(),所以我什至无法理解 nil 是从哪里来的。

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

【问题讨论】:

    标签: swift2 nsdata


    【解决方案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
    }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 您粘贴的代码不是您的实际代码(或不完整)吗?你基本上写了if self.data != nil { self.data = NSData() }。但由于self.data在赋值前为nil,所以条件为假。
      猜你喜欢
      • 2015-08-31
      • 1970-01-01
      • 1970-01-01
      • 2017-03-08
      • 2015-10-11
      • 2019-03-15
      • 2015-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多