J'essaie d'extraire les données d'image à partir d'un Voici mon code: p> n'importe quelle idée pourquoi uiImageView code> afin que je puisse le télécharger sur FireBase stockage. Cependant,
iv.Image? .Jpegdata () code> retourne nil. J'utilise la standard Bibliothèque Kingfisher pour ajouter l'image de l'URL à la
uiimageview code>.
iv.Image () code> est néant? J'ai aussi essayé
iv.image? .Pngdata () code> et c'est aussi nul. P> p>
3 Réponses :
comme est asynchrone iv.image? .jpegdata () / iv.Image? .pngdata () code> sera nulle avant que l'image soit chargée de l'image le serveur p> p>
Remarque supplémentaire: Il devrait y avoir une version de cette méthode avec une fermeture qui sera appelée à la fin (une fois que l'image est téléchargée).
@Larme oui je pense que c'est ce que l'OP a besoin
Heureusement, vous pouvez savoir quand le téléchargement est terminé en ajoutant un SetImage code> ne modifie pas la propriété code> image code> automatiquement. Il doit potentiellement télécharger l'image de l'Internet, qui prend du temps.
terminéhandler code>: p>
Comme @sh_khan a expliqué que vous devez attendre le async code> appel à la fin. Voici le correctif:
let url = URL(string: "https://pbs.twimg.com/profile_images/1229497999392477186/BMXkjVEJ_400x400.jpg")
let iv = UIImageView()
iv.kf.setImage(with: url) { _ in
if let png = iv.image?.jpegData(compressionQuality: .leastNormalMagnitude){
filePath.putData(png, metadata: nil){ metadata, error in
print("metadata: \(metadata) |error: \(error)")
}
}
}