私は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のバグですか、何か間違っていますか?
更新
Swiftはフェイル可能なイニシャライザーの概念を追加し、UIImageはその1つになりました。イニシャライザはOptionalを返すため、イメージを作成できない場合はnilを返します。
デフォルトでは、変数をnil
にすることはできません。 image
とnil
を比較しようとするとエラーが発生するのはそのためです。変数を明示的に定義する必要があります optional :
let image: UIImage? = UIImage(contentsOfFile: filePath)
if image != nil {
return image!
}
画像にコンテンツ(> nil)があるかどうかを確認する最も簡単な方法は次のとおりです。
if image.size.width != 0 { do someting}
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
}
ここで、画像サイズを確認します。
Init、あなたがinit?(contentsOfFile path: String)
the ?
は、optional値を返すことを意味します。
nil
のオプション変数を使用する前にチェックする必要があります。
受け入れられた回答よりも短く、Swift-style方法、名前付きオプションの連鎖それを行うには:
if let image = UIImage(contentsOfFile: filePath) {
return image
}
次のようにimageAssetを確認できます。
if image.imageAsset != nil
{
// image is not null
}
else
{
//image is null
}