【问题标题】:Mapping Array to Core Data in RestKIt .20在 RestKIt .20 中将数组映射到核心数据
【发布时间】:2013-07-29 08:12:34
【问题描述】:

我正在尝试将 Json 映射到名为 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

和这种格式的json:

"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"
      },

当我尝试映射照片时的问题,类型

我有用于照片的 NSManagedObject 类

@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

我尝试通过以下方式进行映射:

 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]];

但有异常或值是照片为零 我如何映射照片并输入任何帮助

【问题讨论】:

    标签: ios objective-c restkit object-object-mapping


    【解决方案1】:

    您有两个不使用 KVC 键路径的对象数组,“html_attributions”和“types”。有关在这种情况下映射的更多信息,请参阅此 RestKit 文章:Mapping values without key paths

    但是——如果您可以控制 JSON 结构,我建议创建两个新的 Objective C 类,可能命名为 HtmlAttributionType,每个类都有一个属性,为这些类创建映射并设置 relationships在 RestKit 中。如果你能做到这一点并改变你的 JSON 的传递方式,它将为你大大简化事情。

    这些类可能的新 JSON 结构 (sn-ps):

     "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"} ],
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-03
      相关资源
      最近更新 更多