我有一个嵌套的json结构如下:
{
"receiver-id":123456,
"rewards": [
{
"content": "reward text 1",
"reward-code": "456ABC",
"reward-Id": "234"
},
{
"content": "reward text 2",
"reward-code": "012ABC",
"reward-Id": "567"
}
]
}
我有一个如下的实体对象,我希望将上面的json直接映射到:
@interface Reward: NSManagedObject
@property (nonatomic, retain) NSNumber * receiverID;
@property (nonatomic, retain) NSString * content;
@property (nonatomic, retain) NSString * rewardCode;
@property (nonatomic, retain) NSString * rewardID;
如何将上述json结构直接映射到上述Reward
实体?我不希望只有一个集合或其他实体存储来自json的rewards
内容。我只希望将每个rewards
集合作为单独的行存储在Reward
实体中,并附加相应的高级receiverID
属性。
我尝试了以下映射,但只映射了receiverID
。我究竟做错了什么?如何在此上下文中访问rewards
数组元素?
_rewardsMapping = [RKEntityMapping mappingForEntityForName:@"Reward" inManagedObjectStore:objectStore];
_rewardsMapping.forceCollectionMapping = YES;
_rewardsMapping.identificationAttributes = @[ @"rewardID" ];
[_rewardsMapping addAttributeMappingsFromDictionary:@{
@"receiver-id":@"receiverID",
@"(rewards).content": @"content",
@"(rewards).reward-code": @"rewardCode",
@"(rewards).reward-id": @"rewardID"
}];
答案 0 :(得分:0)
你无法真正做到你想要的。 JSON的结构将导致一个对象保存receiver-id
以及与多个Reward
实例的关系。这也是Core Data更喜欢存储数据的方式。
您目前拥有的是由许多不同功能组成的映射,以支持与您收到的完全不同的JSON。你要么:
receiver-id
嵌入到数组中的每个项目中rewardsMapping
添加关系(并修复该映射)