我有一个while循环我希望继续执行,如果返回的数字为0.问题是当前循环永远不会停止,因为它不等待完成处理程序返回其结果(这需要几秒钟) 。 if语句完成后,我怎么才能重新执行while循环?
while循环
var empty = true
override func viewDidLoad() {
repeat {
str = iFunctions.generateRandomStringWithLengthOf(4) as String
iFunctions.getServerData(str){(msg)
in
if (msg > 0){
self.empty = false
print("not empty")
}
else{
print("empty")
}
self.count = msg!
print(self.count)
}
} while(empty)
}
功能
func getServerData(q: String, completionHandler: (Int?) -> ()) -> () {
let params = [
"term": q
]
Alamofire.request(.GET, "URL", parameters: params)
.responseJSON { response in
if response.result.error == nil {
let json = JSON(response.result.value!)
//add data to struct
completionHandler(json["results"].count)
}
}
}
答案 0 :(得分:2)
你不应该用循环来做这件事。这就是Alamofire的重点,所以你不必处理线程和循环。您正在使用高级指令:回调。
实际上很容易解决您的问题:
ImageView