返回完成处理程序后重新执行while循环

时间:2015-12-14 20:20:02

标签: swift

我有一个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)
                }
        }

    }

1 个答案:

答案 0 :(得分:2)

你不应该用循环来做这件事。这就是Alamofire的重点,所以你不必处理线程和循环。您正在使用高级指令:回调。

实际上很容易解决您的问题:

ImageView