在此代码块中,当我在readData块中打印问题数组时,它会打印从函数返回的数据,但仅当它退出该块并尝试在该块外打印时,该数组为空
if keyword.lowercased().contains("abdominal distention"){
readData(id: "1", userCompletionHandler: {data, error in
self.questionsArray = data
print("Questions Array inside the block: \(self.questionsArray)")
})
print("Questions Array outside the block: \(questionsArray)")
//print("Abdominal Distention")
return true
}
这是readData方法:
func readData(id: String, userCompletionHandler: @escaping ([String], Error?) -> Void){
let request = NSMutableURLRequest(url: NSURL(string: "http://adminsapi.somee.com/Api/Test/?id=\(id)")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0)
request.httpMethod = "GET"
var questionsArr = [String]()
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: {data, response, error in
if response != nil {
//print("Response: \(response!)")
}
if let data = data {
do{
let obj = try JSONDecoder().decode([Questions].self, from: data)
for question in obj{
questionsArr.append(question.question)
}
userCompletionHandler(questionsArr, nil)
} catch{
print("Error in retrieving data: \(error)")
}
}
else{
print("Error: \(String(describing: error))")
}
})
dataTask.resume()
}
也许问题出在完成处理程序块上,我真的不知道