无法检查我的变量是否为SWIFT

时间:2015-08-31 17:59:15

标签: ios swift release optional

我有一个非常奇怪的问题。 我需要检查我的二进制数据(在我的coredata基础上)是否为零。

在控制台中,如果我直接打印变量,它就是零。 但如果我使用if / else条件来检查它,我的变量不是nil。

println(self.selectedPost!.attachment?.image) // ->print nil 

if let mybinary = self.selectedPost!.attachment?.image {    
    println("mybinary is not nil") // -> print "mybinary is not nil"
} else {
    println("mybinary is nil")
}

编辑

使用相同的结果:

if self.selectedPost!.attachment?.image != nil {...
    println("mybinary is not nil") // -> print "mybinary is not nil"
} else {
    println("mybinary is nil")
}

我不明白为什么。

此问题仅在发布模式下出现,而不在调试中出现。

2 个答案:

答案 0 :(得分:0)

您需要查看!=nil

按照目前的情况,myBinary的值是可选的。你需要检查它的内容。

答案 1 :(得分:0)

您也可以尝试我们as?在if语句中转换数据。

println(self.selectedPost!.attachment?.image) // ->print nil 

if let mybinary = self.selectedPost!.attachment?.image as? NSData {    
    println("mybinary is not nil") // -> print "mybinary is not nil"
} else {
    println("mybinary is nil")
}

如果可能,as? NSData将投放mybinary。如果它为零,则返回nil而不是可选类型。