使用 HTTP 将结构 Codable 发布为使用 Alamofire 的 JSON 数组

Posted

技术标签:

【中文标题】使用 HTTP 将结构 Codable 发布为使用 Alamofire 的 JSON 数组【英文标题】:Post with HTTP a struct Codable as a JSON array with Alamofire 【发布时间】:2019-04-19 10:51:13 【问题描述】:

我正在使用 Swift 4.2Xcode 10.2.1Alamofire 4.8.2

注意:我曾经使用 Alamofire 5,但还没有文档

我有这个可编码的:

struct User: Codable 


    var name : String
    var lastname : String
    var email : String
    var passwd : String
    var grade: String
    var img: String

然后我为每个变量分配一个 nameField 值。

       let user = User(name: nameField.text!, lastname: lastnameField.text!, email: emailField.text!, passwd: passwdField.text!, grade: gradeField.text!, img: base64ImageString)

我将此提交给我的函数, submitRegistration(for: user)

然后在我的函数中使用 Alamofire


func submitRegistration(for user: User) 

    Alamofire.request("https://httpbin.org/post", method: .post, User: user, encoding: JSONEncoding.default)


然后我收到以下错误:

对成员'request(_:method:parameters:encoding:headers:)'的模糊引用

【问题讨论】:

***.com/questions/47685241/… 【参考方案1】:

这对我有用

Ambiguous reference to member 'upload(_:to:method:headers:interceptor:)'

或者试试这个方法

func postJSON() 

    let url = "Your URL"

    let parameters = ["name":tFname.text!,"Lastname":tFLastname.text!,"password":tFpassword.text!,"email":tFemail.text!,"address":tVaddress.text!] as NSDictionary

    AF.request("http://XXXXXXXXXXXXXXX/register", method: .post, parameters: (parameters as! Parameters), encoding: JSONEncoding.default)
        .responseJSON  response in
            print(response)
            switch response.result 
            case .success:
                print(response)
            case .failure(let error):
                print(error)
            
    

 

【讨论】:

问题是我的 let = 用户在一个文件中,而函数在另一个文件中

以上是关于使用 HTTP 将结构 Codable 发布为使用 Alamofire 的 JSON 数组的主要内容,如果未能解决你的问题,请参考以下文章

如何使用解码器将给定 JSON 中 Double 类型的 Codable 属性转换为 Date?

使用 Codable 解析多级 JSON

Swift 根据响应类型为 JSON 字段值动态选择 Codable 结构

如何使用 Swift 的 Codable 编码成字典?

如何使用 Codable 解码具有更改键的 json 响应?

使用 swift Codable 以值作为键来解码 JSON