swift - 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 步之后我需要做什么才能对其进行处理?
谢谢您的帮助
解决方案
这应该可以解决它(只需将所有内容都放在关闭中)
@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)
}
}
}
}
}
}
推荐阅读
- javascript - 为函数内的 else 语句创建循环
- r - 在 R 代码中为路段(纬度经度)分配 ID
- python - 你如何在pygame中制作滚动背景?
- r - 将具有重复 A 列值的 data.frame 转换为转置的 data.frame
- python - 像sql一样在python中查询csv文件
- html - 如果我上传自定义字体,是否需要多个字体?
- c# - 与 sp_help 相比,SqlDataReader(在程序集中)返回不同的数据类型
- python - 运算符 //= 在 Python 中做了什么?
- rust - 遍历一个大小的 Range
借用它 - scala - 根据 Scala 中的条件从同一集合的元素创建 Map