Swift ObjectMapper如何映射嵌套实体中的值

Swift ObjectMapper如何映射嵌套实体中的值,swift,core-data,objectmapper,Swift,Core Data,Objectmapper,在此场景中,使用 这里C是具有行地址和端口的实体。现在使用ObjectMapper如何设置端口实体C的值 我已经编写了这个嵌套的代码部分 class a: NSManagedObject, Mappable { @NSManaged var port: NSNumber? @NSManaged var b: NSSet? private var barr: [b]? required public init?(map: Map) { let ctx = DbHelper .getC

在此场景中,使用

这里C是具有行地址和端口的实体。现在使用ObjectMapper如何设置端口实体C的值

我已经编写了这个嵌套的代码部分

class a: NSManagedObject, Mappable {
 @NSManaged var port: NSNumber?
 @NSManaged var b: NSSet?
 private var barr: [b]?
 required public init?(map: Map) {
   let ctx = DbHelper .getContext()
   let entity = NSEntityDescription.entity(forEntityName: "a", in: ctx)
   super.init(entity: entity!, insertInto: ctx)
   mapping(map: map)
}

public func mapping(map: Map) {
  port <- map["port"]
  barr <- map["b"]
  if barr != nil
  {
      b = NSSet(array: barr!)
      barr = nil
  }
 }
}
a类:NSManagedObject,可映射{
@NSVAR管理端口:NSNumber?
@NSB:NSSet?
私人巴尔:[b]?
必需的公共初始化?(映射:映射){
设ctx=DbHelper.getContext()
让entity=NSEntityDescription.entity(名为“a”,in:ctx)
super.init(实体:entity!,insertInto:ctx)
映射(映射:映射)
}
公共函数映射(映射:映射){

端口首先,您的json无效。您在端口:
“端口:”2“,之后忘记了一个

这里是解决办法

模型结构:

class Port : Mappable {
 var port:String?
 var b: [C]?

 required init?(map: Map) {

 }

 func mapping(map: Map) {
    port <- map["port"]
    b <- map["b"]
 }
}

class C : Mappable {
 var c:[Address]?

 required init?(map: Map) {

 }

 func mapping(map: Map) {
    c <- map["c"]
 }
}

class Address : Mappable {
 var address:Int?

 required init?(map: Map) {

 }

 func mapping(map: Map) {
    address <- map["address"]
 }
}
如果你在项目的开始阶段,你应该使用
codabable
。网上有很多教程。搜索Alamofire+Codable,你可以非常轻松地处理请求+解析


提示:您的命名非常混乱。看看这篇文章,这对模型结构也有帮助。

到目前为止您累了什么?@AhmadF编辑了这个问题,添加了我当前实现的内容。感谢您的回答,但我想知道如何通过在类C中创建对象端口来将端口值从类端口存储到类C。可以吗你能帮助我如何使用codable并在核心数据中存储自定义对象吗?不,我不能。当你有特定问题时,我可以帮助你。有很多关于核心数据的教程:第一次点击谷歌。搜索
核心数据codable swift
我找到了我正在谷歌上查看关于coredata codable的信息,但对于这个特定问题,我将如何通过在类C中创建对象端口,我将端口值从类Port存储到类C。
class Port : Mappable {
 var port:String?
 var b: [C]?

 required init?(map: Map) {

 }

 func mapping(map: Map) {
    port <- map["port"]
    b <- map["b"]
 }
}

class C : Mappable {
 var c:[Address]?

 required init?(map: Map) {

 }

 func mapping(map: Map) {
    c <- map["c"]
 }
}

class Address : Mappable {
 var address:Int?

 required init?(map: Map) {

 }

 func mapping(map: Map) {
    address <- map["address"]
 }
}
if let json = "yourJson" {
                if let res:[Port] = Mapper<Port>().mapArray(JSONArray: json as! [[String : Any]]) {
                    //your port objects
                }
            }
    let url = "https://api.myjson.com/bins/iw6vj" //your json
    Alamofire.request(url).responseJSON { (data) in
        if let json = data.result.value {
            if let res:[Port] = Mapper<Port>().mapArray(JSONArray: json as! [[String : Any]]) {
                //your port objects
            }
        }
    }