打印语句未打印
Print statement are not getting printed
为什么在我下面的代码中,AlamofireImage 下载图像后 viewWillAppear 块中的打印语句会跳过 viewWillAppear 块中的其余代码...
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
Alamofire.request("https://example.com/four.png").responseImage { response in
debugPrint(response)
print(response.request as Any)
print(response.response as Any)
debugPrint(response.result)
if let image = response.result.value {
print("image downloaded: \(image)")
self.imageServer.append(image)
print("ImageServer append Successful")
print("The new number of images = \(self.imageServer.count)")
}
}
///////////THESE STATEMENTS ARE BEING SKIPPED/////////////////
print("The new number of images = \(imageServer.count)")
print("Test")
trackedImages = loadedImagesFromDirectoryContents(imageServer)
configuration.trackingImages = trackedImages
configuration.maximumNumberOfTrackedImages = 1
sceneView.session.run(configuration)
}
您可以使用 completionHandler
来解决这个问题。 function
完成后将执行。
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
fetchImage {
print("The new number of images = \(imageServer.count)")
trackedImages = loadedImagesFromDirectoryContents(imageServer)
configuration.trackingImages = trackedImages
configuration.maximumNumberOfTrackedImages = 1
sceneView.session.run(configuration)
}
}
func fetchImage(completion: @escaping ()->()) {
Alamofire.request("https://example.com/four.png").responseImage { response in
debugPrint(response)
print(response.request as Any)
print(response.response as Any)
debugPrint(response.result)
if let image = response.result.value {
print("image downloaded: \(image)")
self.imageServer.append(image)
print("ImageServer append Successful")
print("The new number of images = \(self.imageServer.count)")
}
completion()
}
}
为什么在我下面的代码中,AlamofireImage 下载图像后 viewWillAppear 块中的打印语句会跳过 viewWillAppear 块中的其余代码...
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
Alamofire.request("https://example.com/four.png").responseImage { response in
debugPrint(response)
print(response.request as Any)
print(response.response as Any)
debugPrint(response.result)
if let image = response.result.value {
print("image downloaded: \(image)")
self.imageServer.append(image)
print("ImageServer append Successful")
print("The new number of images = \(self.imageServer.count)")
}
}
///////////THESE STATEMENTS ARE BEING SKIPPED/////////////////
print("The new number of images = \(imageServer.count)")
print("Test")
trackedImages = loadedImagesFromDirectoryContents(imageServer)
configuration.trackingImages = trackedImages
configuration.maximumNumberOfTrackedImages = 1
sceneView.session.run(configuration)
}
您可以使用 completionHandler
来解决这个问题。 function
完成后将执行。
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
fetchImage {
print("The new number of images = \(imageServer.count)")
trackedImages = loadedImagesFromDirectoryContents(imageServer)
configuration.trackingImages = trackedImages
configuration.maximumNumberOfTrackedImages = 1
sceneView.session.run(configuration)
}
}
func fetchImage(completion: @escaping ()->()) {
Alamofire.request("https://example.com/four.png").responseImage { response in
debugPrint(response)
print(response.request as Any)
print(response.response as Any)
debugPrint(response.result)
if let image = response.result.value {
print("image downloaded: \(image)")
self.imageServer.append(image)
print("ImageServer append Successful")
print("The new number of images = \(self.imageServer.count)")
}
completion()
}
}