user2630485
user2630485

Reputation: 1

Mapping Array to Core Data in RestKIt .20

Iam Trying To map Json To Custom Object Called Place

Managed Object Class Of Place :

@interface Place : NSManagedObject

@property (nonatomic, retain) NSString * icon;
@property (nonatomic, retain) NSString * place_id;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSNumber * price_level;
@property (nonatomic, retain) NSNumber * rating;
@property (nonatomic, retain) NSString * vicinity;
@property (nonatomic, retain) NSString * reference;
@property (nonatomic, retain) Geometry *geometry;
@property (nonatomic, retain) Json *json;
@property (nonatomic, retain) NSSet *opening_hours;
@property (nonatomic, retain) NSSet *photos;
@property (nonatomic, retain) NSSet *types;
@end

and json in this formate :

"results" : [
      {
         "geometry" : {
            "location" : {
               "lat" : -33.870540,
               "lng" : 151.1988150
            }
         },
         "icon" : "http://maps.gstatic.com/mapfiles/place_api/icons/cafe-71.png",
         "id" : "c71365287e7606bd21a3311d21fda087830b7813",
         "name" : "Pancakes on the Rocks",
         "opening_hours" : {
            "open_now" : true
         },
         "photos" : [
            {
               "height" : 1224,
               "html_attributions" : [
                  "\u003ca href=\"https://plus.google.com/105663944571530352563\"\u003eJoshua Gilmore\u003c/a\u003e"
               ],
               "photo_reference" : "CnRoAAAAtHLK7ii6I9RN0soDFHF9Zqu1ppyHouUPu-E_BlAP2xlJJLMJrlsBBr3ALzYZ_ysFdgDzJOc-L3NkqQ2FLk5nOAW7LNldTthkSslmbXkXqGbScwCzAwgIj_EyUQlGQjS6d7Ng36nKy_SItlejfeR8zRIQYtT--IxV_d-GfdTcebDjfhoUU7gE_ufZOBxH35EPUtUXbCJk9Gs",
               "width" : 1632
            }
         ],
         "price_level" : 2,
         "rating" : 3.80,
         "reference" : "CoQBcgAAAI_28BshREfmXJ9UKzOLLalhpRaqcW-Wupk1-D2sgkU6ZNe1nsR0zXopB5E-_BGXO1gHxJ1IAe0l-GXzrXj9Dz31crwQ-iwNFLcBRKSGnLmEu_AgKCkfDVZIsgeGrXLNxWLOZ_U8WAZzJu5Uc9tHa9LUF2Rj1MPk9vroGcFjLGWMEhCynlHHTt_P0EZ4wSwwfsumGhQAkqN53-D4ZNjBPEr7qJXZAZMdDg",
         "types" : [ "cafe", "restaurant", "food", "establishment" ],
         "vicinity" : "Harbourside Shopping Centre,Darling Harbour/227 & 229-230 Darling Drive, Sydney"
      },

the problem when i try to map Photos,types

i have NSManagedObject Class For Photo

@interface Photo : NSManagedObject

@property (nonatomic, retain) NSNumber * height;
@property (nonatomic, retain) NSNumber * width;
@property (nonatomic, retain) NSString * photo_reference;
@property (nonatomic, retain) NSSet *html_attributions;
@property (nonatomic, retain) Place *place;
@end

i try to map this by :

 RKEntityMapping* photosMapping = [RKEntityMapping mappingForEntityForName:NSStringFromClass([Photo class]) inManagedObjectStore:objectManager.managedObjectStore];

    [photosMapping addAttributeMappingsFromArray:@[@"height",@"photo_reference",@"html_attributions",@"width"]];

    //Add relationship between place and photos
    [placeMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"photos"
                                                                              toKeyPath:@"photos"
                                                                               withMapping:photosMapping]];

but there was exception Or value are photos is nil how i can map photos and types any help please

Upvotes: 0

Views: 576

Answers (1)

Joel H.
Joel H.

Reputation: 2784

You have two arrays of objects that aren't using KVC key paths, "html_attributions" and "types." See this RestKit article for more information about mapping in this type of situation: Mapping values without key paths

However -- if you have control over the JSON structure, I recommend creating two new Objective C classes, perhaps named HtmlAttribution and Type, each with one property, create mappings for those classes and set the relationships in RestKit. If you can do this and change how your JSON comes through, it will simplify things greatly for you.

Possible new JSON structure for those classes (snippets):

 "html_attributions" : [ {"attribution_data":"\u003ca
           href=\"https://plus.google.com/105663944571\u003c/a\u003e"} ],

 "types" : [ {"type_name":"cafe"}, {"type_name":"restaurant"}, 
             {"type_name":"food"}, {"type_name":"establishment"} ],

Upvotes: 2

Related Questions