2017-09-11 2 views
-3

を画像のダウンロードURLを取得したいですコード私はいくつかの画像をアップロードしfirebaseを使用して、その作業罰金が、問題は、私は私のここでの画像</p> <p>のダウンロードURLを取得することはできません午前firebaseストレージIOSから迅速

@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 
} 

私がアップロードメソッド内strURLを印刷するとき、URLが来るが、私はそのが来ていないbtnUploadImgsActionで印刷するとき、何が間違っていますdonig ?? 事前

+1

https://stackoverflow.com/a/46146043/7715250同じロジック –

+1

あなたはそれが正しいものとして、マークをあなたのメソッド内で非同期メソッドを呼び出して、私の答えはあなたを助けている場合、同期方法 – Abhishek

答えて

2

に感謝を助けてくださいあなたは、このメソッドは非同期方式であるため、直接文字列を返す代わりに、メソッドを閉鎖する方法を作成する必要があります

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

がで更新を下回るような

あなたのメソッド宣言があるべき何かごメソッド

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

関数呼び出しは

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

@Roohでリターンを取得しようとしています回答 – Abhishek

+0

はい、私に助けてください、ありがとう –

関連する問題

 関連する問題