【问题标题】:not assigning value to nested model in swift不在swift中为嵌套模型赋值
【发布时间】:2018-09-03 09:43:21
【问题描述】:

试图为我的模型对象赋值但返回 nil

我的模型:

struct Request:Mappable{


    var  id:String="" //
    var  origin:Location? 

}
  mutating func mapping(map: Map) {


        id <- map["id"]//
        origin <- map["origin"] //

}


struct Location :Mappable{

    var address=Address()


    mutating func mapping(map: Map) {

        address <- map["address"]

    }


var request=Request()
request.origin?.address.province?.id = "test" // assign nil

【问题讨论】:

  • 避开 ObjectMapper 并查看 Swift 4 的 Codable 协议
  • 需要时间将我所有的模型转换为 Codable。如果我使用 swift 3 怎么办?
  • 如果你使用的是 Swift 3,我只祝你好运!
  • 因为originnil,所以不会再分配任何内容。您需要确保 originprovince 不是 nil
  • 当您创建像var request = Request() 这样的请求obj 时,此变量的字段origin 的值为nil。这就是为什么不会保存id 值的原因。您需要先设置origin

标签: ios swift objectmapper


【解决方案1】:

假设您有如下AddressProvince 类型,

struct Address {
    var province: Province?
}

struct Province {
    var id: String?
}

那么要给省份id赋值,你需要如下设置request

var request = Request()
request.origin = Location()
request.origin?.address.province = Province()
request.origin?.address.province?.id = "test"

【讨论】:

  • 你是如何实现这个解决方案的??完美运行。
  • 正如我在其中一个 cmets 中提到的,originprovince 需要为 non-nil 才能搜索到 id。因为request 是新对象,其中originprovincenil。所以我在将值分配给id之前都进行了初始化。
  • request.origin = Location()。这是如何工作的?位置也为零
猜你喜欢
  • 2016-08-14
  • 2020-09-20
  • 1970-01-01
  • 2021-03-04
  • 1970-01-01
  • 2015-10-22
  • 2019-11-26
  • 1970-01-01
  • 2017-05-11
相关资源
最近更新 更多