Ios RestKit 0.2*-使用RKRelationshipMapping映射多级关系

Ios RestKit 0.2*-使用RKRelationshipMapping映射多级关系,ios,objective-c,restkit,restkit-0.20,Ios,Objective C,Restkit,Restkit 0.20,因此有一个JSON文件如下: { "eventList" : [ { "eventID" : 1, "comment" : "Connected at place.", "eventTypes" : [ { "eventContextTypes" : [ { "eventContextTypeID" : 14, "eventConte

因此有一个JSON文件如下:

{
  "eventList" : [
    {
      "eventID" : 1,
      "comment" : "Connected at place.",
      "eventTypes" : [
        {
          "eventContextTypes" : [
            {
              "eventContextTypeID" : 14,
              "eventContextTypeText" : "Hospital",
            }
          ],
          "eventTypeID" : 2,
          "eventTypeText" : "Connection"
        }
      ],
      "submittedDate" : "2014-07-16T20:24:04Z"
    },
    {
      "eventID" : 2,
      "comment" : "Connected at place.",
      "eventTypes" : [
        {
          "eventContextTypes" : [
            {
              "eventContextTypeID" : 11,
              "eventContextTypeText" : "Location"
            }
          ],
          "eventTypeID" : 2,
          "eventTypeText" : "Connection"
        }
      ],
      "submittedDate" : "2014-06-16T20:10:51Z"
    }
  ]
}
[eventTypeMapping addPropertyMappingsFromArray:@[[RKRelationshipMapping relationshipMappingFromKeyPath:EventTypeRelationships.eventContextTypes
                                                                                             toKeyPath:EventTypeRelationships.eventContextTypes
                                                                                           withMapping:eventContextTypeMapping]]];
[newsFeedMapping addPropertyMappingsFromArray:@[[RKRelationshipMapping relationshipMappingFromKeyPath:@"eventList"
                                                                                            toKeyPath:@"eventList"
                                                                                          withMapping:eventTypeMapping]]];
在我的应用程序中,我确实有多个调用,其中有EventType调用,映射如下:

{
  "eventList" : [
    {
      "eventID" : 1,
      "comment" : "Connected at place.",
      "eventTypes" : [
        {
          "eventContextTypes" : [
            {
              "eventContextTypeID" : 14,
              "eventContextTypeText" : "Hospital",
            }
          ],
          "eventTypeID" : 2,
          "eventTypeText" : "Connection"
        }
      ],
      "submittedDate" : "2014-07-16T20:24:04Z"
    },
    {
      "eventID" : 2,
      "comment" : "Connected at place.",
      "eventTypes" : [
        {
          "eventContextTypes" : [
            {
              "eventContextTypeID" : 11,
              "eventContextTypeText" : "Location"
            }
          ],
          "eventTypeID" : 2,
          "eventTypeText" : "Connection"
        }
      ],
      "submittedDate" : "2014-06-16T20:10:51Z"
    }
  ]
}
[eventTypeMapping addPropertyMappingsFromArray:@[[RKRelationshipMapping relationshipMappingFromKeyPath:EventTypeRelationships.eventContextTypes
                                                                                             toKeyPath:EventTypeRelationships.eventContextTypes
                                                                                           withMapping:eventContextTypeMapping]]];
[newsFeedMapping addPropertyMappingsFromArray:@[[RKRelationshipMapping relationshipMappingFromKeyPath:@"eventList"
                                                                                            toKeyPath:@"eventList"
                                                                                          withMapping:eventTypeMapping]]];
然后调用eventList,映射如下:

{
  "eventList" : [
    {
      "eventID" : 1,
      "comment" : "Connected at place.",
      "eventTypes" : [
        {
          "eventContextTypes" : [
            {
              "eventContextTypeID" : 14,
              "eventContextTypeText" : "Hospital",
            }
          ],
          "eventTypeID" : 2,
          "eventTypeText" : "Connection"
        }
      ],
      "submittedDate" : "2014-07-16T20:24:04Z"
    },
    {
      "eventID" : 2,
      "comment" : "Connected at place.",
      "eventTypes" : [
        {
          "eventContextTypes" : [
            {
              "eventContextTypeID" : 11,
              "eventContextTypeText" : "Location"
            }
          ],
          "eventTypeID" : 2,
          "eventTypeText" : "Connection"
        }
      ],
      "submittedDate" : "2014-06-16T20:10:51Z"
    }
  ]
}
[eventTypeMapping addPropertyMappingsFromArray:@[[RKRelationshipMapping relationshipMappingFromKeyPath:EventTypeRelationships.eventContextTypes
                                                                                             toKeyPath:EventTypeRelationships.eventContextTypes
                                                                                           withMapping:eventContextTypeMapping]]];
[newsFeedMapping addPropertyMappingsFromArray:@[[RKRelationshipMapping relationshipMappingFromKeyPath:@"eventList"
                                                                                            toKeyPath:@"eventList"
                                                                                          withMapping:eventTypeMapping]]];
问题在于映射eventContextTypes的值。出于某些原因,它只保存最后一个映射对象的映射数据。例如,当我调用JSON文件时,它映射Hospital,然后用第一个对象数组中的第二个值Location覆盖它。我做错了什么

提前谢谢

EventTypeMapping和EventContextMapping的定义如下:

RKObjectMapping *eventTypeMapping = [EventType mapping];
RKObjectMapping *eventContextTypeMapping = [EventContextType mapping];
======更新======

下面是EventTypes和EventContextType的映射函数

以及EventContextType映射:

以下是模型设计:


==========更新结束========

您有任何标识属性吗?您应该显示完整的映射和模型类定义…@Wain是的,我设置了标识属性。当我把它放在JSON中的两个层次上,或者直接调用这些单独的对象时,映射就会起作用。当它有三层时,它似乎覆盖了所有的值。顺便说一句,我已经更新了问题。在运行请求并处理响应之后,从数据存储中获取所有内容并查找重复的对象,有些有关系,有些没有关系-是否存在。你有很多循环关系,那么它们是如何被填充的呢?当您说它映射医院,然后用位置覆盖它时,您如何通过关系内容验证它。这可能是一个新闻源标识或关系填充问题,但我还不确定…@Wain,我运行了请求,处理了它,从存储中取出,并打印出包含所有关系和数据的值。根据JSON,它们具有正确的关系,但没有重复项,标识属性似乎正常工作。当我说它映射医院,然后用Location覆盖它时,我的意思是第一个对象正确地映射了Event->EventType->EventContextType和其中的正确值。但是在映射第二个对象时,第一个对象的EventContextType更改为第二个对象的位置。因此,我修改了JSON,将EventTypes和EventContextTypes作为两个不同的对象,而不是嵌套在原始结构中。这个结构适合我。但是,如果你或任何阅读本文的人能够解释我最初的问题发生的原因,那就太好了。