使用JSON字符串将使用RestKit的对象手动加载到Core Data中

cho*_*bin 2 iphone core-data ios restkit

使用restkit的开发分支(0.20),有没有办法将JSON字符串映射到核心数据对象存储中?

我知道在0.10中,本页底部描述的方法有效但是如何在restkit 0.20中执行此操作?任何指导赞赏!谢谢!

id<RKParser> parser = [[RKParserRegistry sharedRegistry] parserForMIMEType:MIMEType];
id parsedData = [parser objectFromString:JSONString error:&error];

RKObjectMappingProvider* mappingProvider = [RKObjectManager sharedManager].mappingProvider;
RKObjectMapper* mapper = [RKObjectMapper mapperWithObject:parsedData mappingProvider:mappingProvider];
RKObjectMappingResult* result = [mapper performMapping];
Run Code Online (Sandbox Code Playgroud)

JD_*_*JD_ 6

我昨天安装了RESTKit v0.20.0pre4,并且对一个特定情况也有同样的需求.

以下是我要映射的JSON字符串的示例:

{"info":"the sun is shining","detail":"in Bordeaux ~ 29 °C"}
Run Code Online (Sandbox Code Playgroud)

这就是我执行映射的方式.

- (InfoRESTMapped *)mapInfoFromJSONString:(NSString *) JSONString{

NSString* MIMEType = @"application/json";
NSError* error;

NSData *data = [JSONString dataUsingEncoding:NSUTF8StringEncoding];
id parsedData = [RKMIMETypeSerialization objectFromData:data MIMEType:MIMEType error:&error];
if (parsedData == nil && error) {
    //deal with error
}

RKObjectMapping *infoMapping = [RKObjectMapping requestMapping];
[infoMapping addAttributeMappingsFromDictionary:@{
 @"info": @"myInfo",
 @"detail": @"myDetail",
 }];


InfoRESTMapped *infoMapped = [[InfoRESTMapped alloc] init];
RKMappingOperation* mapper = [[RKMappingOperation alloc] initWithSourceObject:parsedData destinationObject:infoMapped mapping:infoMapping];
[mapper performMapping:&error];

return infoMapped;
}
Run Code Online (Sandbox Code Playgroud)

这些帖子让我得到了我建议的解决方案:

我希望它有所帮助.我猜其他一些将在最终版本发布时提供更好的解决方案(也有更好的文档......).