Ios RestKit仅保存响应数组中的最后一项
我正在发送一个请求,以获取包含嵌套数据数组的对象。但是,RestKit仅保存嵌套数据数组中的最后一项 例如,下面是服务器正在传递的JSON响应Ios RestKit仅保存响应数组中的最后一项,ios,objective-c,core-data,restkit,Ios,Objective C,Core Data,Restkit,我正在发送一个请求,以获取包含嵌套数据数组的对象。但是,RestKit仅保存嵌套数据数组中的最后一项 例如,下面是服务器正在传递的JSON响应 { "nutrition_day": { "id": "5342e9e13138610012420100", "start_on": "2014-04-07", "meal_goals": [ { "id": "5342e9e131386100
{
"nutrition_day": {
"id": "5342e9e13138610012420100",
"start_on": "2014-04-07",
"meal_goals": [
{
"id": "5342e9e13138610012410100",
"name": "Breakfast",
"food_entries": [
{
"id": "535429513663320008210000",
"consumed_on": "2014-04-20",
"food_id": 33801,
"serving_id": 29457,
}
]
},
{
"id": "5342e9e13138610012430100",
"name": "Morning Snack",
"food_entries": []
}
]
}
}
但是,使用下面的代码,当我尝试访问nutrition_data.Mein_goals时,我只剩下数组中的最后一项“晨餐点”,而没有得到“早餐”
映射:
+ (void)mapping
{
RKObjectMapping *requestMapping = [RKObjectMapping requestMapping];
RKEntityMapping *responseMapping = [RKEntityMapping mappingForEntityForName:@"NutritionDay" inManagedObjectStore:[[RKObjectManager sharedManager] managedObjectStore]];
[requestMapping addAttributeMappingsFromArray:@[@"date"]];
[responseMapping addAttributeMappingsFromArray:@[@"start_on", @"protein_target"]];
[responseMapping setIdentificationAttributes:@[@"start_on"]];
[responseMapping addRelationshipMappingWithSourceKeyPath:@"meal_goals" mapping:[MealGoal responseMapping]];
RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:requestMapping
objectClass:[NutritionDay class]
rootKeyPath:@"nutrition_day"
method:RKRequestMethodGET];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:responseMapping
method:RKRequestMethodAny
pathPattern:@"nutrition/days/:date"
keyPath:@"nutrition_day"
statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[[RKObjectManager sharedManager] addRequestDescriptor:requestDescriptor];
[[RKObjectManager sharedManager] addResponseDescriptor:responseDescriptor];
}
请求:
[[RKObjectManager sharedManager] getObjectsAtPath:@"nutrition/days/2014-12-12" parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
NutritionDay *nut = ((NutritionDay *)mappingResult.firstObject);
NSLog(@"%lu", (long)nut.meal_goals.count); // this always returns 1 when it should be 2
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
NSLog(@"fail");
}];
我需要做些什么,以便RestKit识别整个关系数组并保存它?我建议您在映射中包含
id
,并将其用作标识属性
进餐目标
应该是一个对多关系(与之相反)
您的日志应该是:
NSLog(@"%lu", (long)nut.meal_goals.count);
除此之外,您显示的代码看起来是正确的。记录整个映射结果以验证内容