Подтвердить что ты не робот

UIImage on swift не может проверить нуль

У меня есть следующий код на Swift

var image = UIImage(contentsOfFile: filePath)
        if image != nil {
           return image
       }

Он работал отлично, но теперь на Xcode Beta 6 это возвращает предупреждение

 'UIImage' is not a subtype of 'NSString'

Я не знаю, что делать, я пробовал разные вещи, например

 if let image = UIImage(contentsOfFile: filePath) {
            return image
   }

Но ошибка изменится на:

Bound value in a conditional binding must be of Optional type

Это ошибка на Xcode6 beta 6 или я что-то не так?

4b9b3361

Ответ 1

Обновление

Swift теперь добавила концепцию отказоустойчивых инициализаторов, и теперь UIImage является одним из них. Инициализатор возвращает Необязательный, поэтому, если изображение не может быть создано, оно вернет нуль.


Переменные по умолчанию не могут быть nil. Вот почему вы получаете ошибку при попытке сравнить image с nil. Вам нужно явно указать вашу переменную как optional:

let image: UIImage? = UIImage(contentsOfFile: filePath)
if image != nil {
   return image!
}

Ответ 2

func imageIsNullOrNot(imageName : UIImage)-> Bool
{

   let size = CGSize(width: 0, height: 0)
   if (imageName.size.width == size.width)
    {
        return false
    }
    else
    {
        return true
    }
}

Вызов метода выше Как и:

 if (imageIsNullOrNot(selectedImage))
 {
     //image is not null
 }
 else
 {
    //image is null
 }

здесь, я проверяю размер изображения.

Ответ 3

Инициировать, что вы вызываете init?(contentsOfFile path: String), ? означает, что он возвращает необязательное значение.

Перед тем, как использовать его, вы должны проверить необязательные vars для nil.

Более короткий, чем принятый ответ и стиль в стиле Swift, чем для Необязательная цепочка:

if let image = UIImage(contentsOfFile: filePath) {
   return image
}

Ответ 4

Самый простой способ проверить, имеет ли изображение контент (> ноль):

    if image.size.width != 0 { do someting} 

Ответ 5

Вы можете проверить это imageAsset как это:

if image.imageAsset != nil
{
    // image is not null
}
else 
{
    //image is null
}