2017-09-11 1 views
-3

ich Feuerbasis bin mit ein paar Bilder, und seine Arbeit gut zu laden, aber das Problem kann ich die Download-URL des BildesIch möchte die Download-URL für das Bild von Feuerbasis Lagerung erhalten ios schnellen

hier nicht bekommen meine Code

@IBAction func btnUploadImgsAction(_ sender: UIButton) { 


    let url1 = uploading(img: Img1) 
    print("///////////img 1 //////// \(url1) ////////") 
    let url2 = uploading(img: Img2) 
    print("///////////img 2 //////// \(url2) ////////") 
    let url3 = uploading(img: Img3) 
    print("///////////img 3 //////// \(url3) ////////") 
    let url4 = uploading(img: Img4) 
    print("///////////img 4 //////// \(url4) ////////") 


} 


func uploading(img : UIImageView)-> String{ 
    var strURL = "" 
    let imageName = NSUUID().uuidString 
    let storeImage = self.storageRef.child("profile_Images").child(imageName) 

    if let uploadImageData = UIImagePNGRepresentation((img.image)!){ 
     storeImage.putData(uploadImageData, metadata: nil, completion: { (metaData, error) in 
      storeImage.downloadURL(completion: { (url, error) in 
       if let urlText = url?.absoluteString { 

        strURL = urlText 
        print("///////////tttttttt//////// \(strURL) ////////") 


       } 
      }) 
     }) 


    } 

    return strURL 
} 

, wenn ich die uRL kommt die strURL in der Upload-Methode drucken, aber wenn ich in der btnUploadImgsAction gedruckt seine nicht kommen, Was ist Donig falsch ?? bitte helfen Vielen Dank im Voraus

+1

https://stackoverflow.com/a/46146043/7715250 gleiche Logik –

+1

Sie rufen Asynchronous Methode innerhalb Ihrer Methode und versuchen Rückkehr in synchrone Methode – Abhishek

Antwort

2

Sie sollten eine Schließung Methode anstelle Methode erstellen, die Zeichenfolge direkt zurückgibt, da diese Methode Asynchron-Methode ist

Ihre Methode Erklärung sollte so etwas sein, unter

func uploading(img : UIImageView, success: (url: String) -> Void) { 
// return with clouser 
success(url: strurl) 
} 

aktualisiert mit Methode

func uploading(img : UIImageView, completion: @escaping ((String) -> Void)) { 
    var strURL = "" 
    let imageName = NSUUID().uuidString 
    let storeImage = self.storageRef.child("profile_Images").child(imageName) 

    if let uploadImageData = UIImagePNGRepresentation((img.image)!){ 
     storeImage.putData(uploadImageData, metadata: nil, completion: { (metaData, error) in 
      storeImage.downloadURL(completion: { (url, error) in 
       if let urlText = url?.absoluteString { 

        strURL = urlText 
        print("///////////tttttttt//////// \(strURL) ////////") 

        completion(strURL) 
       } 
      }) 
     }) 
    } 
} 

Und Funktionsaufruf wäre

let str = uploading(img: imageObject) { (url) in 
    print(url) 
} 
+0

@Rooh zu erhalten, wenn meine Antwort hat Ihnen geholfen, Mark es als richtig Antwort – Abhishek

+0

ja es hilft mir, vielen Dank –

Verwandte Themen