2013-10-05 3 views
0

Je fais une requête GET avec RESTKit et lorsque je fais ma correspondance d'objet, cela ne fonctionne pas. Cependant, il dit toujours qu'il a mappé un objet dans le résultat de mappage, mais je ne sais pas ce que c'est ou comment je peux l'obtenir pour mapper le reste des objets. Qu'est-ce que je fais de mal pour faire apparaître le résultat de mappage comme un objet mappé et comment puis-je l'obtenir pour mapper tous les objets appropriés?Le mappage d'objet ne fonctionne pas avec le mappage d'objet RESTKit

Voici le résultat de la cartographie:

Mapping Result: (
    "<Info: 0x9c91130>" 
) 

Voici ma requête GET: // RK Connexion RKLogConfigureByName ("RestKit/Réseau", RKLogLevelTrace);

NSIndexSet *statusCodeSet = RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful); 
NSString *urlString = [NSString stringWithFormat:@"https://beta.stuff.com/"]; 
NSURL *url = [NSURL URLWithString:urlString]; 

//Object Mapping 
RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[Info class]]; 
[mapping addAttributeMappingsFromDictionary:@{@"name": @"name", @"id": @"strenuusID", @"location_specialties.address": @"address", @"location_specialties.state": @"state", @"location_specialties.zip": @"zipcode", @"location_specialties.address_lines": @"address_lines"}]; 

NSString *pathPatternString = [NSString stringWithFormat:@"stuff/%@/stuff2/%@/", moreresultsVCSobj.projectNumber, moreresultsVCSobj.doctorStuff]; 

//Response Descriptor 
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping 
                           method:RKRequestMethodGET 
                          pathPattern:pathPatternString 
                           keyPath:@"" 
                          statusCodes:statusCodeSet]; 

RKObjectManager *manager = [RKObjectManager managerWithBaseURL:url]; 
[manager addResponseDescriptor:responseDescriptor]; 
[manager.HTTPClient setDefaultHeader:@"Auth-Token" value:moreresultsVCSobj.userAuthToken]; 

Info *info = [Info new]; 
[manager getObject:info path:pathPatternString parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) 
{ 
    NSLog(@"Mapping Result: %@", mappingResult.array); 
} failure:^(RKObjectRequestOperation *operation, NSError *error) 
{ 
    NSLog(@"Error: %@", error); 
}]; 

Voici le JSON que je suis l'analyse syntaxique:

response.body= 
{ 
"name": "Name, Generic N, DDS", 
"id": 123456, 
"npi": "1234567890", 
"hospitality": false, 
"groupiness": [ 
    "Other" 
], 
"client_ids": null, 
"has_comments": false, 
"comment_count": 0, 
"is_facility": false, 
"location_specialties": [ 
    { 
     "id": 123456, 
     "address_id": 454345, 
     "address": "1234 Rifle Rd", 
     "state": "Al", 
     "zip": "43543", 
     "address_lines": [ 
      "1234 Rifle Rd", 
      "Generic Town, Al 43543", 
      "111-222- 3344" 
     ], 
     "latitude": 21432234, 
     "longitude": 432432, 
     "is_validated": true, 
     "providers_at_address_count": 2, 
     "specialties": [ 
      { 
       "name": "Dentists", 
       "plans": [ 
        { 
         "name": "Plan name", 
         "lists_specialty": true 
        }, 
        { 
         "name": "Plane name 2", 
         "lists_specialty": true 
        }, 
        { 
         "name": "Plan name 3", 
         "lists_specialty": true 
        } 
       ] 
      } 
     ] 
    }, 
    [ 
     { 
      "id": 123456, 
      "address_id": 454345, 
      "address": "1234 Rifle  Rd", 
      "state": "Al", 
      "zip": "43543", 
      "address_lines": [ 
       "1234 Rifle Rd", 
       "Generic Town, Al 43543", 
       "111-222-  3344" 
      ], 
      "latitude": 21432234, 
      "longitude": 432432, 
      "is_validated": true, 
      "providers_at_address_count": 2, 
      "specialties": [ 
       { 
        "name": "Dentists", 
        "plans": [ 
         { 
          "name": "Plan name", 
          "lists_specialty": true 
         }, 
         { 
          "name": "Plane name 2", 
          "lists_specialty": true 
         }, 
         { 
          "name": "Plan name 3", 
          "lists_specialty": true 
         } 
        ] 
       } 
      ] 
     }, 
     "hospital_detail": null, 
     "tags": [ 

     ] 
    } 

Modifié: Voici mon fichier Info.h. J'ai essayé de vérifier les mappings d'autres choses comme le nom mais ils ne fonctionnent toujours pas.

#import <Foundation/Foundation.h> 

@interface Info : NSObject 

@property (nonatomic, copy) NSString *name; 
@property (nonatomic, copy) NSString *strenuusID; 
@property (nonatomic, copy) NSString *npi; 
@property (nonatomic, copy) NSArray *specialty_search_groups; 
@property (nonatomic, copy) NSArray *address_lines; 
@property (nonatomic, copy) NSArray *address; 
@property (nonatomic, copy) NSString *state; 
@property (nonatomic, copy) NSString *zipcode; 
@property (nonatomic, copy) NSString *planName; 

@end 

Répondre

0

Vous obtenez un objet résultat car votre JSON est un dictionnaire. Votre descripteur de mappage et de réponse est écrit en termes d'un seul objet.

Cette mise en correspondance:

@"location_specialties.address": @"address" 

ne fonctionnera pas parce que location_specialties est un tableau donc il n'y a aucun moyen d'accéder à l'adresse. Sauf si votre destination est une variable tableau, alors cela pourrait fonctionner.

Vous devez vérifier le contenu de votre objet Info en détail et rechercher des problèmes dans votre journal de suivi. Si vous avez encore des problèmes, vous devez donner des détails sur l'objet Info lui-même.

Questions connexes