web-dev-qa-db-ja.com

UIImage on Swift nilをチェックできません

私は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ベータ6のバグですか、何か間違っていますか?

36
Wak

更新

Swiftはフェイル可能なイニシャライザーの概念を追加し、UIImageはその1つになりました。イニシャライザはOptionalを返すため、イメージを作成できない場合はnilを返します。


デフォルトでは、変数をnilにすることはできません。 imagenilを比較しようとするとエラーが発生するのはそのためです。変数を明示的に定義する必要があります optional

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

画像にコンテンツ(> nil)があるかどうかを確認する最も簡単な方法は次のとおりです。

    if image.size.width != 0 { do someting} 
2
Jeremy Andrews
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
Vijay Rathod

Init、あなたがinit?(contentsOfFile path: String) the ?は、optional値を返すことを意味します。

nilのオプション変数を使用する前にチェックする必要があります。

受け入れられた回答よりも短く、Swift-style方法、名前付きオプションの連鎖それを行うには:

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

次のようにimageAssetを確認できます。

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