我的应用程序有时会在NSData变量中找到nil
时崩溃。当我试图解释错误时,它说“类型值NSData
”永远不能为零,不允许进行比较。
另外,我已将字段data
初始化为var data = NSData()
,因此我无法理解nil甚至会来自何处。
if self.data != nil {
self.data = data!
.
.
.
}
答案 0 :(得分:1)
您要将self.data
与nil
进行比较,而不是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
}