Ios 如何将RKMappingResult对象保存到RestKit中的核心数据?

Ios 如何将RKMappingResult对象保存到RestKit中的核心数据?,ios,objective-c,cocoa-touch,core-data,restkit,Ios,Objective C,Cocoa Touch,Core Data,Restkit,我尝试将从服务器获取的核心数据NSManagedObject保存到其中。但我不知道如何将成功块中的[mappingResult firstObject]得到的对象保存到核心数据。我该怎么做?我应该使用RKObjectManager的postObject还是RKManagedRequestOperation?在此之前是否应该执行[managedObjectContext insertNewObjectForEntityForName:@”“]?我在官方文档中找不到有关此案例的任何说明,需要一些帮助

我尝试将从服务器获取的核心数据NSManagedObject保存到其中。但我不知道如何将
成功块中的[mappingResult firstObject]得到的对象保存到核心数据。我该怎么做?我应该使用
RKObjectManager的postObject
还是
RKManagedRequestOperation
?在此之前是否应该执行
[managedObjectContext insertNewObjectForEntityForName:@”“]
?我在官方文档中找不到有关此案例的任何说明,需要一些帮助。 **编辑:**我初始化
RKManagedRequestOperation
如下:

RKResponseDescriptor* responseDescriptor =[RKResponseDescriptor
                                           responseDescriptorWithMapping:[UserMapping mappingForUser]
                                           method:RKRequestMethodPOST
                                           pathPattern:kUserEndpoint
                                           keyPath:@"profile"
                                           statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];

RKRequestDescriptor* requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:[UserMapping mappingForUserProfileModel] 
                                                                               objectClass:[User class] rootKeyPath:@"profile" method:RKRequestMethodPOST];


[[RKObjectManager sharedManager] addRequestDescriptor:requestDescriptor];
[[RKObjectManager sharedManager] addResponseDescriptor:responseDescriptor];

userObject =  [User new];

NSDictionary* userParameters = @{ @"user_id" : [User sharedUser].userId};


[[RKObjectManager sharedManager] appropriateObjectRequestOperationWithObject:resumeObject method:RKRequestMethodPOST
                                                                        path:kUserEndpoint
                                                                  parameters:userParameters];


RKManagedObjectRequestOperation* managedRequest = [[RKManagedObjectRequestOperation alloc]
                                                   initWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@", kService, kUserEndpoint]]]
                                                   responseDescriptors:@[responseDescriptor]];

managedRequest.managedObjectContext = _managedObjectContext;

[managedRequest setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {


    NSLog(@"MAPPING = %@", [mappingResult firstObject]);


} failure:^(RKObjectRequestOperation *operation, NSError *error) {

}];
[[RKObjectManager sharedManager] enqueueObjectRequestOperation:managedRequest];
EDIT2:RestKit不会将映射数据保存到CoreData。但是userObject.title保存得非常完美:

    userObject =  [_managedObjectContext insertNewObjectForEntityForName:@"User"];
    userObject.title = @"USER_NAME";

    NSDictionary* userParameters = @{ @"user_id" : [User sharedUser].userId};

    [[RKObjectManager sharedManager] postObject:userObject path:kUserEndpoint parameters:userParameters
                                        success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {

                                        } failure:^(RKObjectRequestOperation *operation, NSError *error) { }];

你需要后退一步,因为你的建议是在黑暗中提出的

如果您使用托管对象存储配置对象管理器,并使用实体映射创建响应描述符,则当您收到请求产生的数据时,这些响应描述符将转换为托管对象。在调用成功块之前,这些对象将自动保存到核心数据存储中

要创建的任何其他对象都可以像往常一样创建,并且需要显式保存上下文


使用RestKit发送请求本身不会更改存储内容,只有响应会导致更改。

您需要后退一步,因为您的建议是在黑暗中拍摄的

如果您使用托管对象存储配置对象管理器,并使用实体映射创建响应描述符,则当您收到请求产生的数据时,这些响应描述符将转换为托管对象。在调用成功块之前,这些对象将自动保存到核心数据存储中

要创建的任何其他对象都可以像往常一样创建,并且需要显式保存上下文


使用RestKit发送请求本身不会更改存储内容,只有响应会导致更改。

请参阅本教程。有一个将RestKit与对象管理和代码数据一起使用的示例


参见本教程。有一个将RestKit与对象管理和代码数据一起使用的示例


感谢您的快速回复,但我有一些问题:“在调用成功块之前,这些对象将自动保存到核心数据存储。”。我怎么知道这件事?如何检索它们?以及如何为此初始化RKManagedRequestOperation?您可以像往常一样检索它们-获取请求(它们也在映射结果中提供)。RKManagedRequestOperation用于向服务器发送请求,该服务器将使用响应数据创建托管对象……您能告诉我如何为此初始化
RKManagedRequestOperation
。查看我的编辑我是如何做到这一点的-我有一个异常
实体(null)不符合键“name”
的键值编码,但我的实体有它。听起来你的代码数据堆栈设置不正确。为什么要使用
RKManagedObjectRequestOperation
?您的代码看起来不需要,您可以使用管理器…“为什么要使用RKManagedObjectRequestOperation?”因为用户是
NSManagedObject
子类…感谢您的快速响应,但我有一些问题:“在调用成功块之前,这些对象将自动保存到核心数据存储。”。我怎么知道这件事?如何检索它们?以及如何为此初始化RKManagedRequestOperation?您可以像往常一样检索它们-获取请求(它们也在映射结果中提供)。RKManagedRequestOperation用于向服务器发送请求,该服务器将使用响应数据创建托管对象……您能告诉我如何为此初始化
RKManagedRequestOperation
。查看我的编辑我是如何做到这一点的-我有一个异常
实体(null)不符合键“name”
的键值编码,但我的实体有它。听起来你的代码数据堆栈设置不正确。为什么要使用
RKManagedObjectRequestOperation
?您的代码看起来不需要,您可以使用管理器…“为什么要使用RKManagedObjectRequestOperation?”因为用户是
NSManagedObject
子类。。。