2

我正在为 iOS 使用 RestKit http://restkit.org。我定义了一个对象和一个对象映射,可以使用它与服务器发送和接收数据。但是,对于我的映射对象,我希望使用 -description 方法返回 JSON 映射以记录到控制台。

如何将对象映射到字符串?

4

2 回答 2

6

从 Reskit 的较新版本中的 RestKit ObjectMapping 2.0 开始,对象映射现在发生了很大变化,@b​​radgonesurfing 的答案在这些较新版本中不起作用。

您现在需要使用RKObjectParameterization来执行对象序列化,如下所示:

RKObjectMapping *itemMapping = [RKObjectMaping mappingForClass:[Item class]];
/* Your object mapping definition for the Item class goes here */

RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:itemMapping.inverseMapping objectClass:[Item class] rootKeyPath:nil method:RKRequestMethodPOST];

NSDictionary *dict = [RKObjectParameterization parametersWithObject:item requestDescriptor:requestDescriptor error:nil];
NSData *jsonData = [RKMIMETypeSerialization dataFromObject:dict MIMEType:RKMIMETypeJSON error:nil];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
于 2014-01-13T15:22:04.863 回答
5

我想出了一个解决方案

- (NSString*)description
{
    RKObjectMappingProvider * provider = [RKObjectManager sharedManager].mappingProvider;
    RKObjectMapping* mapping = [provider objectMappingForClass:[self class]];
    RKObjectSerializer * serializer = [RKObjectSerializer serializerWithObject:self mapping:mapping];

    NSError * error;
    return (NSString *)[serializer serializedObjectForMIMEType:RKMIMETypeJSON error: &error];
}
于 2011-10-04T07:55:58.727 回答