【问题标题】:Dictionary is not convertible to Void字典不可转换为 Void
【发布时间】:2014-09-30 10:29:55
【问题描述】:

大家好,我一直在网上搜索但运气不佳,但我正在尝试绕过 Alamofires 的异步特性。我试图将 JSON 响应作为字典返回,但 Xcode 给了我“字典不可转换为 '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
    }
}

任何帮助将不胜感激。

【问题讨论】:

  • 你能让 alamofire 返回一个对象吗?
  • 是的,我是。你必须使用回调,它工作正常。下面的答案是正确的。

标签: ios swift alamofire


【解决方案1】:

您是从闭包返回 test: Dictionary&lt;String,AnyObject&gt;,而不是从 homePageDetails 方法返回。闭包返回类型是Void,这就是你得到这个错误的原因。

我自己没有使用过 Alamofire,但 Alamofire.request 似乎是非阻塞调用。如果是这样,您将无法从此函数返回。您可以使用诸如完成关闭之类的东西。未经测试的概念:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    相关资源
    最近更新 更多