首页 > 解决方案 > Swift4 中的命令行处理序列

问题描述

我是 Swift 编程新手,我需要一些帮助来了解 Swift 如何处理命令行

我正在使用 Xcode 11.2、Swift4、IOS13 和 macOS Catalina

@IBAction func nextStep(_ sender: Any) {
    var urlR : String = ""

    self.buttonNext.isEnabled = false
    self.buttonNext.setTitle("Loading...", for: .normal)

    let storage = Storage.storage().reference()
    let imagesFolder = storage.child("images")
    let imagesFile = imagesFolder.child("\(imageID).jpg")

    print("Step 1 - Start")
    //Recover image
    if let imgRecovered = image.image {
        if let imgData = UIImageJPEGRepresentation(imgRecovered, 0.1) {
            imagesFile.putData(imgData, metadata: nil) { (metaData, error) in
                if error == nil {
                    //Download URL
                   imagesFile.downloadURL { (url, error) in
                        print("Step 2 \(url?.absoluteString) - End of print")
                        self.urlR = url!.absoluteString
                    }
                    // END Download URL

                    print("Step 3 \(self.urlR) - end of print")

                    print("Step 4 - Save Sucess")
                    self.buttonNext.isEnabled = true
                    self.buttonNext.setTitle("Próximo", for: .normal)

                    print("Step 5 - Perform Segue")
                    self.performSegue(withIdentifier: "UserSelectionSegue", sender: self.urlRecebida)


                } else {
                    print("Step 6 - Upload error")
                    self.buttonNext.isEnabled = true
                    self.buttonNext.setTitle("Next", for: .normal)
                }
            }
        }
    }
}

我添加了一些打印消息来理解命令行序列,我希望消息按以下顺序显示:* Step 1 * Step 2 * Step 3 * Step 4 * Step 5 * (或 Step 6 而不是全部以上内容,以防出现错误)。

但是,我得到的输出是 * Step 1 * Step 3 * Step 4 * Step 5 * Step 2

为什么第 2 步是最新显示的?在第 1 步之后我需要做什么才能对其进行处理?

谢谢您的帮助

标签: swift

解决方案


这应该可以解决它(只需将所有内容都放在关闭中)

@IBAction func nextStep(_ sender: Any) {
var urlR : String = ""

self.buttonNext.isEnabled = false
self.buttonNext.setTitle("Loading...", for: .normal)

let storage = Storage.storage().reference()
let imagesFolder = storage.child("images")
let imagesFile = imagesFolder.child("\(imageID).jpg")

print("Step 1 - Start")
//Recover image
if let imgRecovered = image.image {
    if let imgData = UIImageJPEGRepresentation(imgRecovered, 0.1) {
        imagesFile.putData(imgData, metadata: nil) { (metaData, error) in
            if error == nil {
                //Download URL
               imagesFile.downloadURL { (url, error) in
                    print("Step 2 \(url?.absoluteString) - End of print")
                    self.urlR = url!.absoluteString

                // END Download URL

                print("Step 3 \(self.urlR) - end of print")

                print("Step 4 - Save Sucess")
                self.buttonNext.isEnabled = true
                self.buttonNext.setTitle("Próximo", for: .normal)

                print("Step 5 - Perform Segue")
                self.performSegue(withIdentifier: "UserSelectionSegue", sender: self.urlRecebida)


            } else {
                print("Step 6 - Upload error")
                self.buttonNext.isEnabled = true
                self.buttonNext.setTitle("Next", for: .normal)
            }
        }
      }
    }
}
}

推荐阅读