字典不能转换为Void

嗨,大家好我一直在寻找网没有太多的运气,但我试图绕过Alamofiresasynchronous性。 我试图返回作为字典的JSON响应,但Xcode是给我“字典不能转换为'虚空'”

func homePageDetails(userName:String) -> (Dictionary<String,AnyObject>){ let username = userName let hompePageDetails = Alamofire.request(.GET, "http://example.com/API/Bunch/GetHomePageDetails/\(username)/").responseJSON{(request, response, JSON, error) in print(JSON) var test = JSON as Dictionary<String,AnyObject> return test } } 

任何帮助将不胜感激。

您正在返回test: Dictionary<String,AnyObject>封闭,而不是从homePageDetails方法的test: Dictionary<String,AnyObject> 。 closures返回types是Void ,这就是为什么你得到这个错误。

我自己并没有使用Alamofire,但Alamofire.request好像是非阻塞的呼叫。 如果是这样你不能从这个函数返回。 你可以使用像完成closures。 未经testing的概念:

 func homePageDetails(userName:String, completion:(Dictionary<String,AnyObject>) -> Void) { let username = userName let hompePageDetails = Alamofire.request(.GET, "http://example.com/API/Bunch/GetHomePageDetails/\(username)/").responseJSON{(request, response, JSON, error) in print(JSON) var test = JSON as Dictionary<String,AnyObject> completion(test) } }