Swift 匹配领域对象的分离数组

Swift 匹配领域对象的分离数组,swift,xcode,realm,objectmapper,Swift,Xcode,Realm,Objectmapper,我遇到了一些问题。我收到来自服务器的JSON响应: { "days" : [ { "id" : 1, "name" : "Day 1 - first day", "url": "http://example.com/days/1" }, { "id" : 2, "name" : "Day 2 - second day", "url": "http://example.com/days/2"

我遇到了一些问题。我收到来自服务器的JSON响应:

{
  "days" : [
    {
      "id" : 1,
      "name" : "Day 1 - first day",
      "url": "http://example.com/days/1"
    },
    {
      "id" : 2,
      "name" : "Day 2 - second day",
      "url": "http://example.com/days/2"
    },
    ...
  ],
  "week" : [
    {
       "id" : 1,
       "dayIds" : [1, 2, 6, 9, 23, 44, 2345],
       "name" : "Rest week"
    },
    {
       "id" : 35,
       "dayIds" : [34,77,23,67,126,224],
       "name" : "Educational week"
    },
  ],
  "plan" : {
    "weekIds: [1, 6, 23, 74]
  }
}
我的数据模型(无映射):

我相信,在某个地方存在着更纯粹、更简单的解决方案:)
谢谢。

您的数据结构看起来非常嵌套,因此您必须进行内部循环。如果您想要更快捷的方式,请在此处使用贴图和过滤器,而不是for循环:

let days = weeks.map({ 
       $0.dayIds.map({
          $0.filter({ 
              $0.id == dayId
          })
       })
    })

你的答案正确。但是你知道在引擎盖下面有这样的东西吗?
let json: [String: Any] = try! JSONSerialization.jsonObject(with: data, options: .allowFragments) as! [String: Any]

let plans: [Plan] = Mapper<Plan>().mapArray(JSONArray: json["plans"] as! [[String: Any]])
let days: [Day] = Mapper<Day>().mapArray(JSONArray: json["days"] as! [[String: Any]])
let weeks: [Week] = Mapper<Week>().mapArray(JSONArray: json["weeks"] as! [[String: Any]])
for week in weeks {
    for dayId in week.dayIds {
        for day in days {
            if day.id == dayId {
                week.days.append(day)
            }
        }
    }
}
for plan in plans {
    for week in weeks {
        for weekId in plans.weekIds {
            if weekId == week.id {
                plan.weeks.append(week)
            }
        }
    }
}
let days = weeks.map({ 
       $0.dayIds.map({
          $0.filter({ 
              $0.id == dayId
          })
       })
    })