J'ai le code suivant sur Swift
var image = UIImage(contentsOfFile: filePath)
if image != nil {
return image
}
Cela fonctionnait très bien, mais maintenant sur Xcode Beta 6, cela renvoie un avertissement
'UIImage' is not a subtype of 'NSString'
Je ne sais pas quoi faire, j'ai essayé différentes choses comme
if let image = UIImage(contentsOfFile: filePath) {
return image
}
Mais l'erreur se transforme en:
Bound value in a conditional binding must be of Optional type
Est-ce un bug sur Xcode6 beta 6 ou est-ce que je fais quelque chose de mal?
Mise à jour
Swift a maintenant ajouté le concept d'initialisateurs disponibles et UIImage en fait désormais partie. L'initialiseur renvoie un Facultatif, donc si l'image ne peut pas être créée, elle renverra nil.
Les variables par défaut ne peuvent pas être nil
. C'est pourquoi vous obtenez une erreur lorsque vous essayez de comparer image
à nil
. Vous devez définir explicitement votre variable comme facultatif :
let image: UIImage? = UIImage(contentsOfFile: filePath)
if image != nil {
return image!
}
La façon la plus simple de vérifier si une image a du contenu (> néant) est:
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
}
}
la méthode ci-dessus appelle Like as:
if (imageIsNullOrNot(selectedImage))
{
//image is not null
}
else
{
//image is null
}
ici, je vérifie la taille de l'image.
Init, que vous appelez init?(contentsOfFile path: String)
le ?
signifie qu'il renvoie une valeur facultative .
Vous devez vérifier les variables facultatives pour nil
avant de l'utiliser.
Réponse plus courte que celle acceptée et style Swift façon, que nommée chaînage facultatif à fais ça:
if let image = UIImage(contentsOfFile: filePath) {
return image
}
Vous pouvez vérifier son imageAsset comme ceci:
if image.imageAsset != nil
{
// image is not null
}
else
{
//image is null
}