J'utilise RestKit pour mapper le JSON suivant aux données de base.Mappage de Relation RestKit Plusieurs à plusieurs Erreur de relation de relation de données de base
J'ai une relation plusieurs-à-plusieurs configurée dans les données de base.
Une trémie peut avoir de nombreux utilisateurs et un utilisateur peut avoir plusieurs trémies.
Je reçois ce message d'erreur:
(entité:. Hopper; id: 0x767d240
hopperToUsers = <relationship fault: 0x8352960 'hopperToUsers' ;
Donc aucun de mes utilisateurs sont mis à jour
JSON :
{
"hoppers": [{
"bearing": 0,
"created_at": "2013-07-26T07:57:00Z",
"distance": 0.0,
"id": 4,
"lat": "30.422032",
"lng": "-86.617069",
"name": "Fort Walton Beach",
"updated_at": "2013-07-26T07:57:00Z",
"users": [{
"avatar_url": null,
"created_at": "2013-07-26T21:37:21Z",
"id": 1,
"link": "http:/example.com/savetheday",
"name": "Clark Kent",
"post": " I once reported a heinous crime here. Superman came to the rescue!",
"thumbnail_url": null,
"updated_at": "2013-07-26T21:37:21Z"
}, {
"avatar_url": null,
"created_at": "2013-07-26T21:37:57Z",
"id": 2,
"link": "http:/example.com/villaincaught",
"name": "Lex Luther",
"post": " I got busted here. Almost took over the world!",
"thumbnail_url": null,
"updated_at": "2013-07-26T21:37:57Z"
}]
}]
}
Mon code, qui suit l'exemple de demande d'objet géré dans le README RestKit https://github.com/RestKit/RestKit.
je réalise mon NSURL doit être changé pour les params, mais Hopper semble carte OK:
`[managedObjectStore createManagedObjectContexts];
RKEntityMapping *userMapping = [RKEntityMapping mappingForEntityForName:@"User" inManagedObjectStore:managedObjectStore];
[userMapping addAttributeMappingsFromDictionary:@{ @"avatar_url": @"avatarURL" ,
@"created_at": @"createdAt",
@"link": @"jsonURL",
@"post": @"post",
@"thumbnail_url": @"thumbnailURL",
@"updated_at": @"updatedAt",
@"id": @"userID"}];
RKEntityMapping *hopperMapping = [RKEntityMapping mappingForEntityForName:@"Hopper" inManagedObjectStore:managedObjectStore];
[hopperMapping addAttributeMappingsFromDictionary:@{ @"id": @"hopperID",
@"lat": @"lat",
@"lng": @"lng",
@"name": @"name",
@"created_at": @"createdAt",
@"distance": @"distance"}];
[hopperMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"hopperToUsers" toKeyPath:@"hopperToUsers" withMapping:userMapping]];
NSIndexSet *statusCodes = RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful); // Anything in 2xx
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:hopperMapping method:RKRequestMethodAny pathPattern:nil keyPath:@"hoppers" statusCodes:statusCodes];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://localhost:3000/hoppers.json?lat=30.422032&lng=-86.617069"]];
RKManagedObjectRequestOperation *operation = [[RKManagedObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[responseDescriptor]];
operation.managedObjectContext = managedObjectStore.mainQueueManagedObjectContext;
operation.managedObjectCache = managedObjectStore.managedObjectCache;
[operation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *result) {
Hopper *hopper= [result firstObject];
NSLog(@"Mapped the hopper: %@", hopper);
NSLog(@"Mapped the user: %@", [hopper.hopperToUsers anyObject]);
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
NSLog(@"Failed with error: %@", [error localizedDescription]);
}];
NSOperationQueue *operationQueue = [NSOperationQueue new];
[operationQueue addOperation:operation];}`
Merci pour la réponse rapide. Quand je fais ça, ça dit ... l'entité Hopper n'est pas compatible avec le codage de valeur de clé pour les "utilisateurs" clés. ' –
Ensuite, les keypaths devraient être à l'envers, RestKit doit savoir où trouver les données dans le JSON et où les placer dans l'objet. – Wain
Oh. Merci pour la clarification sur le mappage addProperty. J'ai deKetPath: @ "users" et toKeyPath: hoppersToUsers (ma relation dans les données de base) .. espérons que c'est juste. Maintenant, je reçois des erreurs de réponse à propos de l'URL. Donc, ce problème est résolu, et je verrai ce qui se passe lorsque je répare le NSURL. Je te donnerais un up mais c'est mon premier post! –