【问题标题】:What is wrong with the returned tuple in this function?此函数中返回的元组有什么问题?
【发布时间】:2014-12-12 03:06:50
【问题描述】:

这是一个函数,它应该返回一个类型为 Int 和 Dictionary 但是我不断收到这个错误“元组类型 '(Int, Dictionary )' 和 '()' 有不同数量的元素(2 对 0)。”这很奇怪,因为它似乎告诉我我正在返回正确的元组,但我不确定为什么它说“(元组)和'()'”有不同的论点。

    class func SomeFunc(param: String) -> (x: Int, y: Dictionary<String, AnyObject>){

    var request = HTTPTask()
    request.responseSerializer = JSONResponseSerializer()

    let params: Dictionary<String,AnyObject> = ["key": param]
    request.POST("http://mysite/url", parameters: params, success: {(response: HTTPResponse) in

        let dict = response.responseObject as Dictionary<String,AnyObject>
        let status:Int = 200
        return (status, dict) //Tuple types '(Int, Dictionary<String, AnyObject>)' and '()' have a different number of elements (2 vs. 0)


        },failure: {(error: NSError, response: HTTPResponse?) in

    })

}

【问题讨论】:

  • 您的return 语句从闭包返回,而不是从函数返回。你不能做你想做的事,因为POST 是异步的。

标签: ios swift tuples


【解决方案1】:

传入一个闭包并使用所需的参数执行它:

func SomeFunc(param: String, withCompletion completion: (x: Int, y: Dictionary<String, AnyObject>) -> ()) {

    var request = HTTPTask()
    request.responseSerializer = JSONResponseSerializer()

    let params: Dictionary<String,AnyObject> = ["key": param]
    request.POST("http://mysite/url", parameters: params, success: {(response: HTTPResponse) in

        let dict = response.responseObject as Dictionary<String,AnyObject>
        let status:Int = 200
        completion(x: status,y: dict) //Tuple types '(Int, Dictionary<String, AnyObject>)' and '()' have a different number of elements (2 vs. 0)


        },failure: {(error: NSError, response: HTTPResponse?) in

    })

【讨论】:

    猜你喜欢
    • 2017-03-20
    • 2020-01-12
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多