2015-01-18 2 views
5

Как проверить, нет ли UIImage?Как определить, пуст ли UIImage?

class UserData { 
    ... 
    var photo: UIImage = UIImage() 
} 

Мой ViewController код выглядит следующим образом:

var userData = UserData() 
    ... 

func preparePhoto(){ 
     if (self.userData.photo == nil) { 
      ... 
     }else{ 
      ... 
     } 
    } 

self.userData.photo == nil не будет работать в Swift.

Xcode говорит: UIImage is not convertible to MirrorDisposition

ответ

9

self.userData.photo будет никогда быть ноль, так что вопрос не имеет смысла.

Причина в том, что вы указали photo как UIImage. Это не то же самое, что и UIImage? - необязательная упаковка UIImage. Только «Необязательный» может быть равен нулю в Swift. Но, как я только что сказал, photo is не a Дополнительно. Поэтому проверить нечего. Вот почему Swift останавливает вас, когда вы пытаетесь выполнить такую ​​проверку.

Итак, что делать? У меня есть два возможных предложения:

  • Моя текущая рекомендация для решения этого является то, что вы сделать типа photo как UIImage? и установить его на начальном этапе до нуля (на самом деле, это неявно ноль с самого начала). Теперь вы можете проверить нуль, чтобы узнать, назначено ли ему фактическое изображение.

    Но имейте в виду, что тогда вам придется не забыть развернуть photo, если вы хотите использовать его для чего угодно! (Вы могли бы вместо этого типа photo как неявно развернутом необязательными, UIImage!, чтобы избежать этого постоянного разворачивания, но я не настолько увлечен этой идеей.)

  • Альтернативная возможность будет рассматривать размер изображения , Если это нулевой размер, это, вероятно, пустое изображение в исходном смысле вашего вопроса!

+0

Причина, по которой это происходит. Я только что сделал свойство фотографии и Optonal, и теперь он работает ... –

+0

@MortenGustafsson. Если вопрос будет урегулирован, пожалуйста, либо дайте свой собственный ответ, и примите его, либо согласитесь с моим, чтобы отметить вопрос, как это было задано для будущих читателей. Благодарю. – matt

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