2013-08-29 3 views
0

Actuellement, je suis en utilisant le format JSON suivant qui est un extrait du service SharePoint REST:RestKit: Comment prétraiter valeur JSON avant la cartographie

{results:[ 
    {uri:"https://site.com/_api/Web/Lists(guid'43963c38-4d1c-4734-8b2d-22dc0b92908c')"}, 
    {uri:"https://site.com/_api/Web/Lists(guid'5363c738-7d9d-9774-6b2d-52dc0b93903d')"}] 
} 

Et je le mapping objet suivant:

RKEntityMapping *listMapping = [RKEntityMapping mappingForEntityForName:@"SPList" 
    inManagedObjectStore:managedObjectStore]; 
[listMapping addAttributeMappingsFromDictionary:@{ 
    @"uri":  @"guid"}]; 
listMapping.identificationAttributes = @[@"guid"]; 

Cependant, avant d'enregistrer dans guid, je voudrais ajouter une logique pour récupérer uniquement la partie guid de uri avant de sauvegarder, donc seulement "43963c38-4d1c-4734-8b2d-22dc0b92908c" est stocké dans le champ guid. Je ne sais pas où ajouter cette logique, quelqu'un pourrait-il m'aider?

Répondre

2

Si vous avez besoin de changer le JSON retourné avant la cartographie, vous pouvez utiliser une implémentation de RKSerialization:

@interface ORRKJsonSerialization : NSObject <RKSerialization> 
@end 

et la mise en œuvre

@implementation ORRKJsonSerialization 

+ (id)objectFromData:(NSData *)data error:(NSError **)error 
{ 
    id result = [NSJSONSerialization JSONObjectWithData:data options:0 error:error]; 
    // change your data before mapping 
    return result; 
} 

+ (NSData *)dataFromObject:(id)object error:(NSError **)error 
{ 
    return [NSJSONSerialization dataWithJSONObject:object options:0 error:error]; 
} 

@end 

puis lors de la configuration:

[RKMIMETypeSerialization registerClass:[ORRKJsonSerialization class] forMIMEType:@"application/json"]; 

HTH

Questions connexes