swift上的UIImage无法检查是否为零

时间:2014-08-19 23:23:19

标签: ios xcode swift uiimage

我在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上的错误还是我做错了什么?

6 个答案:

答案 0 :(得分:52)

<强>更新

Swift现在添加了可用的初始化器的概念,UIImage现在是其中之一。初始化程序返回一个Optional,因此如果无法创建图像,它将返回nil。


默认情况下,变量不能为nil。这就是您在尝试将imagenil进行比较时收到错误的原因。您需要将变量明确定义为optional

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

答案 1 :(得分: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
 }

在这里,我检查图像大小。

答案 2 :(得分:1)

初始化,您呼叫init?(contentsOfFile path: String) ?表示它返回可选值。

在使用之前,您应该检查nil的可选变量。

比接受的答案和 Swift风格的方式更短,而不是命名为 Optional Chaining

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

答案 3 :(得分:1)

检查图像是否具有内容(> nil)的最简单方法是:

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

答案 4 :(得分:0)

您可以像这样检查它的imageAsset:

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

答案 5 :(得分:0)

您可以检查它的宽度,如果没有上传图像,则该宽度为 0。

if(image.size.width != 0){

      print("image found")

} else {

      print("image is null")

}