Dictionary is not convertible to Void

◇◆丶佛笑我妖孽 提交于 2019-12-18 07:11:49

问题


Hi guys I've been searching the net without much luck but I'm trying to get around Alamofires asynchronous nature. I'm trying to return the JSON response as a dictionary but Xcode is giving me "Dictionary is not convertible to 'Void'"

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
    }
}

Any help would be greatly appreciated.


回答1:


You are returning test: Dictionary<String,AnyObject> from closure and not from homePageDetails method. Closure return type is Void, thats why you get this error.

I haven't used Alamofire myself, but Alamofire.request seems like non-blocking call. If its so you cannot return from this function. You can use something like completion closure. Non tested concept:

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)
    }
}


来源:https://stackoverflow.com/questions/26118556/dictionary-is-not-convertible-to-void

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!