Reputation: 1350
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.
Upvotes: 2
Views: 2539
Reputation: 27345
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)
}
}
Upvotes: 9