Ios 使用Alamofire发布嵌套模型

Ios 使用Alamofire发布嵌套模型,ios,json,swift,model,Ios,Json,Swift,Model,我必须在服务器上发布一些数据。下面给出了数据的JSON结构 "hospital": { "hospitalId": "1212111", "hospitalName": "xcxcxcx", "address": { "addressLine1": "fagsgsah", "locality": { "id": "", "name": "", "pLink": ""

我必须在服务器上发布一些数据。下面给出了数据的JSON结构

"hospital": {
    "hospitalId": "1212111",
    "hospitalName": "xcxcxcx",
    "address": {
        "addressLine1": "fagsgsah",
        "locality": {
            "id": "",
            "name": "",
            "pLink": ""
        },
        "city": {
            "id": "",
            "name": "",
            "pLink": ""
        }           
    }
}
我可以很容易地使用字典来实现这种数据结构。但我已经读到,创建模型是发布和解析数据的最佳实践。我创建了四个模型,分别是医院、地址、州、城市,以提高灵活性。正如您在医院模型中看到的那样,任何模型中都可能有更多属性。我的问题是如何实现给定的JSON结构,我可以将其作为参数传递给Alamofire。我是否必须根据数据要求在模型中编写多个初始值设定项

import UIKit

class Hospital {
    var hospitalId:String?
    var hospitalName:String?
    var address:Address?
    var fee:Int?
    var openingTime:UInt64?
    var closingTime:UInt64?
}

/** Address **/
class Address {
    var addressLine1:String?
    var locality:Locality?
    var city:City?
}

/** City **/
class City {
    var cityId:String?
    var cityName:String?
    var cityPLink:String?
}

/** locality **/
class Locality {
    var localityId:String?
    var localityName:String?
    var localityPLink:String?
}

Almofire不支持将模态类自动绑定到响应中。是的,您应该使用每个模态类的JSON数据编写模态初始值设定项


提供了如何将简单JSON、集合和嵌套JSON数据绑定到模式类的示例。

试试这可能会有所帮助

import Foundation

class Hospitalmodel: NSObject {

     var hospitalId:String!
        var hospitalName:String!
    var fee:Int!
        var openingTime:UInt64!
        var closingTime:UInt64!

    var address:Address!

    init(dict:NSDictionary){

        if(dict["hospitalId"] != nil){
            self.hospitalId = dict["hospitalId"] as! String
        }

        if(dict["hospitalName"] != nil){
            self.hospitalName = dict["hospitalName"] as! String
        }

        if(dict["address"] != nil){

                let send = dict["address"] as! NSDictionary
                if send.allKeys.count>0{
                    self.address = Address.init(dict: send)
                }
         }

    }
}

class Address {

    var addressLine1:String!
    var locality:Locality!
    var city:City!

    init(dict:NSDictionary)
    {
        if(dict["addressLine1"] != nil){
            self. addressLine1 = dict["addressLine1"] as! String
        }

        if(dict["locality"] != nil){

                let send = dict["locality"] as! NSDictionary
                if send.allKeys.count>0{
                    self.locality = Locality.init(dict: send)
                }
         }

        if(dict["city"] != nil){

                let send = dict["city"] as! NSDictionary
                if send.allKeys.count>0{
                    self.city = City.init(dict: send)
                }
         }
    }
}

class Locality {

    var localityId:String!
    var localityName:String!
    var localityPLink:String!

    init(dict:NSDictionary)
    {
        if(dict["id"] != nil){
            self.localityId = dict["id"] as! String
        }

        if(dict["name"] != nil){
            self.localityName = dict["name"] as! String
        }

        if(dict["pLink"] != nil){
            self.localityPLink = dict["pLink"] as! String
        }
    }
}

class City {

    var cityId:String!
    var cityName:String!
    var cityPLink:String!

    init(dict:NSDictionary)
    {
        if(dict["id"] != nil){
            self.cityId = dict["id"] as! String
        }

        if(dict["name"] != nil){
            self. cityName = dict["name"] as! String
        }

        if(dict["pLink"] != nil){
            self.cityPLink = dict["pLink"] as! String
        }
    }
}

我还没有试用过swift4编码表,如果您使用swift4,它可能是您的选择,如果它是SWIFT3,那么我建议您使用


请看一看非常易于使用的示例。

我可以将模型数据转换为json,然后将其附加到请求正文中。我只想要模型部分,我能处理阿拉莫菲尔。