私はiOS 用のRestKit http://restkit.orgを使用しています。オブジェクトとオブジェクト マッピングが定義されており、それを使用してサーバーとデータを送受信できます。ただし、マップされたオブジェクトについては、 -description メソッドを使用して、コンソールにログを記録するための JSON マッピングを返したいと考えています。
オブジェクトを文字列にマップする方法は?
私はiOS 用のRestKit http://restkit.orgを使用しています。オブジェクトとオブジェクト マッピングが定義されており、それを使用してサーバーとデータを送受信できます。ただし、マップされたオブジェクトについては、 -description メソッドを使用して、コンソールにログを記録するための JSON マッピングを返したいと考えています。
オブジェクトを文字列にマップする方法は?
オブジェクト マッピングは、Reskit の新しいバージョンの RestKit ObjectMapping 2.0 の時点で大幅に変更されており、@bradgonesurfing の回答はこれらの新しいバージョンでは機能しません。
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];
私は解決策を考え出した
- (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];
}