【问题标题】:ViewController.swift Cannot invoke 'responseJSON' with an argument list of type '((_, _, _, _) -> _)'ViewController.swift 无法使用类型为 '((_, _, _, _) -> _)' 的参数列表调用 'responseJSON'
【发布时间】:2015-07-16 20:13:03
【问题描述】:

我的ViewController.swift 中有以下代码:

func OpenBarrier(){

    let parameters = [
        "username": keyStore?.stringForKey("loginUsername"),
        "password": keyStore?.stringForKey("loginPassword"),
        "api_key" : API.api_key
    ]


    Alamofire.request(.GET, "\(API.baseurl)/slagboom/open.json" , parameters: parameters)
        .responseJSON() { 
             (_, _, JSON, _) in

        println("JSON: \(JSON)")  
        }
}

我得到这个错误:

ViewController.swift:174:14: Cannot invoke 'responseJSON' with an argument list of type '((_, _, _, _) -> _)'

【问题讨论】:

  • 您使用的是哪个版本的 Alamofire?它在 Alamofire、Swift 1.2 和 XCode 6.4 的最新版本中运行良好

标签: ios swift alamofire


【解决方案1】:

您的parameters 参数应该是[String: AnyObject]? 而不是[String : AnyObject?]

修复这个错误,你应该可以再次编译了。

确保您的参数变量存在。如果不是,则编译器会感到困惑,并且错误实际上不是由 Alamofire 引起的。希望对您有所帮助。

【讨论】:

    【解决方案2】:

    我找到了:)

    //the parameters list was wrong
    
    let parameters = [
        "username": keyStore?.stringForKey("loginUsername"),
        "password": keyStore?.stringForKey("loginPassword"),
        "api_key" : API.api_key
    ]
    
    //when i cahnged it to the following it works, now to get around the keystore?
    
    let parameters = [
        "username": "loginUsername",
        "password": "loginPassword",
        "api_key" : API.api_key
    ]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多