-1
votes

jpegdata () de uiimageview is nil

J'essaie d'extraire les données d'image à partir d'un uiImageView afin que je puisse le télécharger sur FireBase stockage. Cependant, iv.Image? .Jpegdata () retourne nil. J'utilise la standard Bibliothèque Kingfisher pour ajouter l'image de l'URL à la uiimageview .

Voici mon code: xxx

n'importe quelle idée pourquoi iv.Image () est néant? J'ai aussi essayé iv.image? .Pngdata () et c'est aussi nul.


0 commentaires

3 Réponses :


2
votes

comme xxx

est asynchrone iv.image? .jpegdata () / iv.Image? .pngdata () sera nulle avant que l'image soit chargée de l'image le serveur


2 commentaires

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



1
votes

SetImage ne modifie pas la propriété image automatiquement. Il doit potentiellement télécharger l'image de l'Internet, qui prend du temps.

Heureusement, vous pouvez savoir quand le téléchargement est terminé en ajoutant un terminéhandler : xxx


0 commentaires

1
votes

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)")
        }
    }
}


0 commentaires