func uploadImageToStorage(image: UIImage) -> String? {

        let imageName = NSUUID().uuidString + ".jpg"

        var url: String?

        if let complessionImage = UIImageJPEGRepresentation(image, 0.1) {

            let ref = FIRStorage.storage().reference().child("profileImages").child(imageName)

            ref.put(complessionImage, metadata: nil, completion: { (metadata, error) in

                if error != nil {
                    return
                }


                url = metadata?.downloadURL()?.absoluteString
            })
        }
        return url
    }

これを実行するとref.putの中ではちゃんと変数urlにURLが代入されているのに、returnするときにはnilになっている。
変数urlにURLを代入してreturnするにはどうしたらいいのでしょうか?