使用 alamofire 2.0 和 Swift 2.0 的 POST 请求

Posted

技术标签:

【中文标题】使用 alamofire 2.0 和 Swift 2.0 的 POST 请求【英文标题】:POST request using alamofire 2.0 and Swift 2.0 【发布时间】:2015-09-16 06:33:46 【问题描述】:

我尝试创建一个使用 Alamofire 发送 POST 请求的基本函数。

@IBAction func createBasicAccount(sender: AnyObject)

    var firstNameToSend = firstName.text
    var lastNameToSend = lastName.text
    var mailAddressToSend = mailAddress.text
    var passwordToSend = password.text
    var parametersToSend = [
        "firstName": firstNameToSend,
        "lastName": lastNameToSend,
        "mailAddress": mailAddressToSend,
        "password": passwordToSend
    ]

    print("Account creation")

    Alamofire.request(.POST, postEndpoint, parameters: parametersToSend, encoding: .JSON)

但是Alamofire.request 不会编译并且编译器会返回:

Cannot convert value of type '[String : String?]' to expected argument type '[String : AnyObject]?'

我试过了:

Alamofire.request(.POST, postEndpoint, parameters: parametersToSend as! AnyObject as? [String : AnyObject], encoding: .JSON)

但是失败了:

Account creation
Could not cast value of type 'Swift.Dictionary<Swift.String, Swift.Optional<Swift.String>>' (0x11fdb1038) to 'Swift.AnyObject' (0x12035b018).

我正在使用 Swift 2.0Xcode 7.0 GM Seedios 8.4Alamofire 2.0

【问题讨论】:

【参考方案1】:

我认为这是一个可选类型问题。可以试试加吗!到您的变量,例如:

var parametersToSend = [
        "firstName": firstNameToSend!,
        "lastName": lastNameToSend!,
        "mailAddress": mailAddressToSend!,
        "password": passwordToSend!
    ]

【讨论】:

我太笨了...非常感谢! 非常感谢您节省了我的时间。 @VivienG 同样在这里 :(.【参考方案2】:

这是 SWIFT 2.2 的最新 VERIOSN 代码,希望对您有所帮助.... 这是 SWIFT 2.2 版本的最新答案

试试这个对你有帮助....

参数:-

    let params : Dictionary = ["YourKEY" : "YourVALUE"]

Post Request_Form:-

Alamofire.request(.POST,"Post Your Url HERE", parameters: params, encoding:.JSON).responseJSON
        
          response in switch response.result 
            
                  case .Success(let JSON):
         //   print("Success with JSON: \(JSON)")
            //converting json into NSDictionary

            let response = JSON as! NSDictionary
            print(response)

            var array = NSMutableArray!()
            //converting respose form into NSMutableArray formate
            array = response.valueForKey("countryList")as? NSMutableArray

            //example if there is an id
          //  let userId = response.objectForKey("id")!

        case .Failure(let error):
            print("Request failed with error: \(error)")
            
    

【讨论】:

以上是关于使用 alamofire 2.0 和 Swift 2.0 的 POST 请求的主要内容,如果未能解决你的问题,请参考以下文章

Alamofire 奇怪的 JSON 前缀 - Swift 2.0

Alamofire Swift-2.0 分支因错误而失败

Alamofire 2.0 编译器问题 - Swift 2 / Xcode 7

转换为 swift 2.0 时,构建的 Alamofire 3 失败

Swift 2.0 + Alamofire 3.0 - 缓慢加载 JSON

Alamofire Swift 2.0 json 响应