从异步闭包中获取结果 - 在展开Optional值时意外发现nil

时间:2015-06-08 06:19:03

标签: xcode swift asynchronous

我正在使用Cycle库来访问我的Web服务。这是我用于POST方法的函数:

func register(requestObj: AnyObject, completion: (result: Int) -> ()){
        Cycle.post("someURL",
            requestObject: requestObj,
            requestProcessors: [JSONProcessor()],
            completionHandler: {(cycle, error) in
                var status = cycle.response.statusCode!
                completion(result: status)
        })
}

如您所见,我尝试传递回调以获取状态代码。我试着在下面的测试函数中得到结果:

func test_RegRequest_UT002(){
        var obj = ["email" : "testHTTP@gmail.com", "password" : "Test@123", "confirmpassword" : "Test@123"]

        UserService.register(obj){ result in //Unexpected found nil while unwrapping an Optional value
            println("This is the response code: \(result)")
        }
}

当我在expectationWithDescription的帮助下首次尝试使用函数寄存器时,我做对了。我猜上面的错误发生在测试代码试图获取值但是闭包还没有从服务器收到响应时。

请告诉我在这种情况下我该怎么做?如果有什么东西可以让主线程等到接收来自Web服务的响应,那就好了。

0 个答案:

没有答案