2015-08-31 2 views
0

У меня очень странная проблема. Мне нужно проверить, нет ли моих двоичных данных (в моей базовой базе), или нет.Невозможно проверить, равна ли моя переменная или нет SWIFT

В консоли, если я печатаю непосредственно переменную, она равна нулю. Но если я использую условие if/else, чтобы проверить его, моя переменная не равна нулю.

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") 
} 

EDIT

Тот же результат с помощью:

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

Я не понимаю, почему.

Эта проблема появляется только в режиме деблокирования, но не в отладке.

ответ

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 вместо необязательного типа.

+0

Я добавил "?" в моем @NSManaged var image: NSData ?, затем «если пусть imageBinary = self.selectedPost! .attachment? .image as NSData?» работает. Благодаря! – cmii

0

Вы должны проверить с !=nil

Как стоять, значение myBinary является необязательным. Вам нужно проверить его содержимое.

+0

Уже пробовал, см. Мое редактирование – cmii

Смежные вопросы