【发布时间】:2014-01-22 22:35:27
【问题描述】:
我尝试保存从服务器获取的核心数据 NSManagedObject。但我不知道如何将从success block 中的[mappingResult firstObject] 获得的对象保存到Core Data。我怎样才能做到这一点?我应该使用RKObjectManager's 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) { }];
【问题讨论】:
标签: ios objective-c cocoa-touch core-data restkit