我读了这个question但没有得到答案
我有多个JSON
RouteSequence
<p class="fortext">Test</p>
路线
{
"checkpoint_id": 145,
"hash": "d5b335dac7c34ba1fd001268b80b21dd",
"is_end": true,
"is_forward_direction": true,
"next_checkpoint_id": 144,
"order": 0,
"path": [
"65.597615 57.153329",
"65.597668 57.153424",
"65.597659 57.153654",
"65.596790 57.153182",
"65.596679 57.153128",
"65.595181 57.152339",
"65.592321 57.150904",
"65.591666 57.150562"
],
"route_id": 87
},
.....
检查点
{
"active_from": "2014-03-25",
"active_to": "2024-01-01",
"capacity_type": "",
"checkpoints_ids": [
319,
321,
338,
339,
340,
......
3355,
3375
],
"city_id": 1,
"description": "Областная библиотека - с/о Липовый остров",
"has_cars_for_disabled_persons": false,
"hash": "49587333a979a22d93d09e4313661eaa",
"id": 125,
"name": "156",
"route_type_id": 3
},
.......
Entities picture和graph view of entities
我在循环中使用类似的东西从json数组创建对象:
{
"city_id": 2,
"code_number": "09080",
"description": "Большая, 183 в сторону Калинина",
"hash": "cd398f0d4a7baa5a47facb3476394d84",
"id": 1503,
"lat": 56.1307455464724,
"lon": 69.528181378059,
"name": "2 микрорайон",
"routes_ids": [
401,
873
]
},
.........
主要问题:如何在这种情况下处理关系。我的应用程序在启动时开始为每个实体处理这个json文件。我问的原因是我的json没有完全嵌套,它只有来自其他实体的id对象数组。那怎么处理呢?例如:
+ (instancetype)instanceWithEntity:(NSEntityDescription*)entity inContext:(NSManagedObjectContext *)context fromJSONObject:(NSDictionary *)jsonData{
Route *route = [[Route alloc] initWithEntity:entity insertIntoManagedObjectContext:context];
route.id = [jsonData valueForKey:@"id"];
route.capacityType = [jsonData valueForKey:@"capacity_type"];
route.objectHash = [jsonData valueForKey:@"hash"];
route.sequenceDescription = [jsonData valueForKey:@"description"];
route.name = [jsonData valueForKey:@"name"];
return route;
}
这是指JSON RouteSequence的关系。我不能只在这里创建对象,我需要通过他的id引用已存在的对象(它不能存在,因为这仍然没有下载和解析)
答案 0 :(得分:0)
我使用框架来支持这种处理,比如RestKit。
您正在做的是外键映射 - 获取一个对象,查找另一个对象以获取其持有的ID并连接它们的过程。
基本上,您将首先导入所有对象,并包含它们连接的所有对象的ID。然后,您再次对导入的数据运行以将所有实例连接在一起。
id可以存储为瞬态属性,因为您只需要它们来促进连接处理(尽管您可以根据需要持久存储它们)。