Ios6 使用RestKit创建子对象

Ios6 使用RestKit创建子对象,ios6,ios7,restkit,restkit-0.20,Ios6,Ios7,Restkit,Restkit 0.20,我不熟悉RestKit,但到目前为止一切似乎都很合理,我已经为用户对象设置了一些对象映射,如下所示 + (NSArray *) responseDecriptorsForEntityMapping:(RKEntityMapping *)entityMapping { NSDictionary *mappings = @{ @"id": @"userID", @"fi

我不熟悉RestKit,但到目前为止一切似乎都很合理,我已经为用户对象设置了一些对象映射,如下所示

+ (NSArray *) responseDecriptorsForEntityMapping:(RKEntityMapping *)entityMapping
{
    NSDictionary *mappings = @{
                               @"id": @"userID",
                               @"firstName": @"forename",
                               @"lastName": @"surname",
                               @"phoneNumber": @"phone",
                               @"emailId": @"email",
                               @"uri": @"uri",
                               };

    [entityMapping addAttributeMappingsFromDictionary:mappings];
    [entityMapping setIdentificationAttributes:@[@"userID"]];
    // Setup response descriptors
    RKResponseDescriptor *getDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:entityMapping
                                                                                       method:RKRequestMethodGET
                                                                                  pathPattern:@"users/:userID"
                                                                                      keyPath:nil
                                                                                  statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];

    return @[getDescriptor];
}
这是从另一个为对象管理器设置映射的类调用的。这很好,从服务器查询用户对象也很有效,所以这很好

我现在想要的是创建一个子记录。我的
用户
对象包含与
设备
的关系。我现在要做的是创建一个新的
Device
对象,并将其插入用户的
devices
集中

有没有一种方法可以创建一个不需要我指定整个URL(即/users/:userID/devices)的映射,并让RestKit自动计算它


如果没有,那没关系,我可以手动设置,但是第二个问题,创建对象并将其放入集合的一般技术是什么?我是否只是将对象创建为普通对象,然后在成功创建后,只需使用普通核心数据方法添加一个新设备,或者我可以配置RestKit来为我执行此操作?

您通常使用
RKRoute
来指定在创建特定类型时要使用的路径模式(GET/POST/…)具有指定对象类的请求的类型。路由检查对象以提取适当的参数以替换到路径模式中

一旦配置了路由,只需发布对象,而不向POST方法提供路径。这会导致对象管理器搜索与类型和类条件匹配的路由,以便可以构建所需的路径


发布时,您可以自己创建对象,RestKit将使用收到的响应更新对象,并将更新保存到上下文中。

您收到的是什么JSON?你有没有研究过在路径模式中使用路线?我已经简单地研究了路线,但没有深入研究。我将收到的json将是我刚刚创建的
设备的一个简单对象。那么您是否正在创建此设备并将其发布到服务器?在这种情况下,您的设备需要一个
userID
属性,RestKit可以使用该属性填充路径模式(通常通过路由定义)。因此,我需要向
device
类添加一个userID变量?是否需要将其持久化到核心数据存储中?不,它可能是暂时的-只需要在使用对象调用POST时设置它。我还没有尝试过在路径模式中添加一个键路径(导航关系以获取id)-可能值得一个快速的实验…再次困惑。因此,我更详细地研究了路由器,创建路由似乎很容易,但是如何创建映射呢?我能看到的实际添加我创建的映射的唯一方法是通过使用响应描述符,但我认为使用路由器意味着不需要响应描述符?路由器用于发送(从模式生成要发送到的路径)。响应描述符用于检查“传入”模式并决定应用哪个映射(从而决定目标类是什么)。路由器实际上与映射过程没有连接,这完全是关于路径管理的。啊,好吧。在使用核心数据时,创建新对象的一般方法是什么,因为无法使用[Class new],但已删除0.1中的旧[Class object]。我是否只使用标准核心数据方法?是否有新的方法?标准核心数据方法。您可以将对象视为接收响应时要填充的存根。