Cómo get keys de relación

Lo siento por inglés 🙁 … Sé que codificar simple json con restkit. Pero json muy confuso es como abajo.

{ "success": { "code": 1, "message": "Message" }, "customers": [ { "customerId": "182", "customerName": "anil", "email": "anil@yahoo.com", "customerAbout": "To show the customer details", "customerLogoSmall": "http://server.com/ thumb/1.jpg", "customerLogoLarge": "http://server.com/ 2.jpg", "ratingPoint": "10", "address": "adress of customer", . . . "openingHour": [ { "day": "monday", "morning": "10to12.30", "evening": "1to6", "customerId": "182" }, { "day": "sunday", "morning": "", "evening": "", "customerId": "182" } ] }, { "customerId": "183", "customerName": "miche", "email": "babu@yahoo.com", "customerAbout": "To show the customer details", "customerLogoSmall": "http://server.com/ thumb/1.jpg", "customerLogoLarge": "http://server.com/ 2.jpg", "ratingPoint": "10", . . . "openingHour": [ { "day": "monday", "morning": "10to12.30", "evening": "1to6", "customerId": "183" }, { "day": "sunday", "morning": "", "evening": "", "customerId": "183" } ] } ], "allCustomers": [ { "customerId": "182" }, { "customerId": "183" } ] } 

//CheckInCustomerOpeningHour.h (para la tecla 'aperturaHora')

 #import <Foundation/Foundation.h> #import <CoreData/CoreData.h> @class CheckInCustomers; @interface CheckInCustomerOpeningHour : NSManagedObject @property (nonatomic, retain) NSNumber * customerId; @property (nonatomic, retain) NSString * day; @property (nonatomic, retain) NSString * evening; @property (nonatomic, retain) NSString * morning; @property (nonatomic, retain) CheckInCustomers *openHourrelationship; @end 

//CheckInCustomers.h (Para la key de 'clientes')

 #import <Foundation/Foundation.h> #import <CoreData/CoreData.h> @class CheckInCustomerOpeningHour; @interface CheckInCustomers : NSManagedObject @property (nonatomic, retain) NSString * address; @property (nonatomic, retain) NSNumber * alreadyRated; @property (nonatomic, retain) NSString * alreadyRatedMessage; @property (nonatomic, retain) NSNumber * avgCustomerRating; @property (nonatomic, retain) NSNumber * bonusProgram; @property (nonatomic, retain) NSString * colourCode; @property (nonatomic, retain) NSString * contactNumber; @property (nonatomic, retain) NSString * customerAbout; @property (nonatomic, retain) NSNumber * customerId; @property (nonatomic, retain) NSString * customerLogoLarge; @property (nonatomic, retain) NSString * customerLogoSmall; @property (nonatomic, retain) NSString * customerName; @property (nonatomic, retain) NSNumber * distanceToShop; @property (nonatomic, retain) NSString * email; @property (nonatomic, retain) NSString * location; @property (nonatomic, retain) NSString * locationLatitude; @property (nonatomic, retain) NSString * locationLongitude; @property (nonatomic, retain) NSNumber * numberOfCustomerRating; @property (nonatomic, retain) NSNumber * offerCount; @property (nonatomic, retain) NSNumber * rateLater; @property (nonatomic, retain) NSNumber * ratingPoint; @property (nonatomic, retain) CheckInCustomerOpeningHour *customerRelationShip; @end 

//CheckInAllCustomers.h (Para la key 'allCustomers')

 #import <Foundation/Foundation.h> #import <CoreData/CoreData.h> @interface CheckInAllCustomers : NSManagedObject @property (nonatomic, retain) NSNumber * customerId; @end 

// código de asignación

 RKObjectManager *objectManager = [[OPRestKit shanetworkingDataManager] objectManager]; RKObjectMapping *success_Mapping = [RKObjectMapping mappingForClass:[checkInSuccess class]]; [success_Mapping mapKeyPath:@"code" toAttribute:@"code"]; [success_Mapping mapKeyPath:@"message" toAttribute:@"message"]; [objectManager.mappingProvider setMapping:success_Mapping forKeyPath:@"success"]; RKManagedObjectMapping *openingHour_Mapping = [RKManagedObjectMapping mappingForClass:[CheckInCustomerOpeningHour class] inManagedObjectStore:objectManager.objectStore]; openingHour_Mapping.primaryKeyAttribute = @"customerId"; [openingHour_Mapping mapKeyPath:@"customerId" toAttribute:@"customerId"]; [openingHour_Mapping mapKeyPath:@"day" toAttribute:@"day"]; [openingHour_Mapping mapKeyPath:@"evening" toAttribute:@"evening"]; [openingHour_Mapping mapKeyPath:@"morning" toAttribute:@"morning"]; RKObjectMapping *hour_Mapping = [RKObjectMapping mappingForClass:[checkInOpeningHour class]]; [hour_Mapping mapKeyPath:@"openingHour" toRelationship:@"openingHourData" withMapping:openingHour_Mapping]; RKManagedObjectMapping *getCustomer_Mapping = [RKManagedObjectMapping mappingForClass:[CheckInCustomers class] inManagedObjectStore:objectManager.objectStore]; getCustomer_Mapping.primaryKeyAttribute = @"customerId"; [getCustomer_Mapping mapKeyPath:@"customerId" toAttribute:@"customerId"]; [getCustomer_Mapping mapKeyPath:@"address" toAttribute:@"address"]; [getCustomer_Mapping mapKeyPath:@"alreadyRated" toAttribute:@"alreadyRated"]; [getCustomer_Mapping mapKeyPath:@"alreadyRatedMessage" toAttribute:@"alreadyRatedMessage"]; [getCustomer_Mapping mapKeyPath:@"avgCustomerRating" toAttribute:@"avgCustomerRating"]; [getCustomer_Mapping mapKeyPath:@"bonusProgram" toAttribute:@"bonusProgram"]; [getCustomer_Mapping mapKeyPath:@"colourCode" toAttribute:@"colourCode"]; [getCustomer_Mapping mapKeyPath:@"contactNumber" toAttribute:@"contactNumber"]; [getCustomer_Mapping mapKeyPath:@"customerAbout" toAttribute:@"customerAbout"]; [getCustomer_Mapping mapKeyPath:@"customerLogoLarge" toAttribute:@"customerLogoLarge"]; [getCustomer_Mapping mapKeyPath:@"customerLogoSmall" toAttribute:@"customerLogoSmall"]; [getCustomer_Mapping mapKeyPath:@"customerName" toAttribute:@"customerName"]; [getCustomer_Mapping mapKeyPath:@"distanceToShop" toAttribute:@"distanceToShop"]; [getCustomer_Mapping mapKeyPath:@"email" toAttribute:@"email"]; [getCustomer_Mapping mapKeyPath:@"location" toAttribute:@"location"]; [getCustomer_Mapping mapKeyPath:@"locationLatitude" toAttribute:@"locationLatitude"]; [getCustomer_Mapping mapKeyPath:@"locationLongitude" toAttribute:@"locationLongitude"]; [getCustomer_Mapping mapKeyPath:@"numberOfCustomerRating" toAttribute:@"numberOfCustomerRating"]; [getCustomer_Mapping mapKeyPath:@"offerCount" toAttribute:@"offerCount"]; [getCustomer_Mapping mapKeyPath:@"rateLater" toAttribute:@"rateLater"]; [getCustomer_Mapping mapKeyPath:@"openingHour" toRelationship:@"customerRelationShip" withMapping:openingHour_Mapping]; RKManagedObjectMapping *getAllCustomer_Mapping = [RKManagedObjectMapping mappingForClass:[CheckInAllCustomers class] inManagedObjectStore:objectManager.objectStore]; [getAllCustomer_Mapping mapKeyPath:@"customerId" toAttribute:@"customerId"]; RKObjectMapping *c_Mapping = [RKObjectMapping mappingForClass:[checkInRoot class]]; [c_Mapping mapKeyPath:@"customers" toRelationship:@"customersData" withMapping:getCustomer_Mapping]; [c_Mapping mapKeyPath:@"allCustomers" toRelationship:@"allCustomersData" withMapping:getAllCustomer_Mapping]; [objectManager.mappingProvider registerMapping:c_Mapping withRootKeyPath:@""]; 

La salida obtendrá 'éxito', 'clientes' y 'todosCustomers', pero el valor 'aperturaHour' es NULL.

 [getCustomer_Mapping mapKeyPath:@"openingHour" toRelationship:@"customerRelationShip" withMapping:openingHour_Mapping]; 

¿Es correcto como el código anterior? No sé cómo get valores de la key "abrir Hora". Plz, ayúdame

EDITAR:

Déjame explicar cómo funciona:

  • Sobre el json se obtiene de nuestro server. Todas las teclas son necesarias para save en conetworkingata.
  • La key 'éxito' es object, no matriz. saveá el object de class 'checkInSuccess' pero no necesita conetworkingata.
  • La key de 'clientes' es array. Se saveá en conetworkingata con el object 'CheckInCustomers'.
  • La key 'allCustomers' es otra matriz. Se saveá en conetworkingata con el object 'CheckInAllCustomers'.
  • La 'key de apertura' es una matriz. tenemos que save los datos centrales.
  • Utilicé el código que no se saveá en conetworkingata con el object 'checkInOpeningHour'. Eso es problema
  • ¿Quiero saber cómo save la matriz 'aperturaHour' en conetworkingata?

Vea cómo funciona:

 NSDictionary *dictionary = [yourParser parse: jsonString]; for (int i= 0; i < [[dictionary valueForKey:@"customers"] count]; i++) { NSArray *openingHourArray = [[[dictionary valueForKey:@"customers"] objectAtIndex:i] valueForKey: openingHour]; for(int j = 0; j <[openingHourArray count]; j++){ NSDictionary *openingHourDictionary = [openingHourArray objectAtIndex:i]; NSLog(@"openingHourDictionary =%@", openingHourDictionary); } } 

aquí una tarea para usted, compruebe si los valores devueltos por valueForKey son dict o array, en consecuencia. De lo contrario, provocará un locking de la aplicación. Happy Coading .. 🙂