我在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上的错误还是我做错了什么?
答案 0 :(得分:52)
<强>更新强>
Swift现在添加了可用的初始化器的概念,UIImage现在是其中之一。初始化程序返回一个Optional,因此如果无法创建图像,它将返回nil。
默认情况下,变量不能为nil
。这就是您在尝试将image
与nil
进行比较时收到错误的原因。您需要将变量明确定义为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")
}