Reputation: 1
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
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