我在核心数据方面遇到了这个问题而且我不知道该去哪里...我找不到与我类似的任何问题所以我在这里问你这个问题:
我有一个核心数据模型,我有几个实体,但最重要的是中心点实体称为活动,其他实体与这个。其中一个是 Group 实体。在Acitivity和Group表之间存在多对多关系 在我从后端获取任何活动之前,我需要为我想要的活动选择组。这样我需要先获取并保存到数据库组之前 - 这很好...... 但是在保存组之后,我需要获取活动,每个活动都有许多组(已经在核心数据中),我需要在这些组之间建立连接。
我假设我需要获取所有组并使用来自Activity的那些组进行检查,之后我需要在Groups实体中找到它并将其添加到Activity?
我必须告诉你,我上面写的场景远非逻辑和简单的解决方案,这就是我关注它的原因。 有关如何在新对象与现有对象之间设置此关系的任何想法?
当用户打开应用时,它有一个空Core Data。因此,要填写它,他必须选择一些组,并根据此选择应用程序能够发送包含活动的时间表请求。因此,如果选择了组,则用户切换到时间表视图,并从API下载带有活动的时间表。每个活动中都有组,但我想使用我已创建的组而不是向Core Data添加新组。
看看一些代码示例: 首先,我向API发出请求以获取所有组,并在响应中获得JSON:
[
{
"id": 507,
"name": "KrDZIs3011Io",
"category": 1,
"category_name": "grupa dziekańska",
"regular": true
},
"..."
]
所以我这样处理:
for (id group in responseObject) {
Group *groupEntity = [NSEntityDescription insertNewObjectForEntityForName:@"Group" inManagedObjectContext:tempContext];
groupEntity.name = [group valueForKey:@"name"];
groupEntity.cashID = [group valueForKey:@"id"];
groupEntity.caseInsensitiveName = [[group valueForKey:@"name"] lowercaseString];
groupEntity.selected = @NO;
}
我会跳过我要检查重复项并保存MOC的部分。
此应用程序能够获取用户选择的组(groupEntity.selected = @YES
)并基于此创建时间表请求。作为回应,用户得到类似的东西:
{
"_id":"g552g3328",
"params":{
"group_id":[
552,
3328
]
},
"version":"5096146ca522d316c87b217b83a6c4d2",
"activities":[
{
"id":18282,
"places":[
{
"id":97,
"name":"Paw. C s. A",
"full_name":"Pawilon C sala A",
"regular":true
}
],
"tutors":[
{
"id":266,
"name":"prof. UEK Paweł Lula",
"short_name":"P. Lula",
"moodle_url":"https://e-uczelnia.uek.krakow.pl/course/view.php?id=1034",
"regular":true
}
],
"groups":[
{
"id":552,
"name":"KrDZIs3011Io",
"type":1,
"type_name":"Grupa dziekańska"
},
{
"id":553,
"name":"KrDZIs3011Si",
"type":1,
"type_name":"Grupa dziekańska"
},
{
"id":554,
"name":"KrDZIs3012Si",
"type":1,
"type_name":"Grupa dziekańska"
}
],
"category":1,
"category_name":"wykład",
"name":"Teoria grafów",
"regular_course":true,
"notes":"",
"url":"",
"date":"2014-02-07",
"day_of_week":5,
"day_of_week_text":"Pt",
"starts_at":"9:35",
"ends_at":"14:45",
"regular_schedule":true,
"starts_at_timestamp":1391765400,
"ends_at_timestamp":1391771100,
"unit_ordinal_number":"1",
"unit_total_count":"15",
"canceled":false,
"canceled_reason":""
},
...
]
}
如您所见,我有一系列活动,每个活动都有一组组(已在数据库中但未链接)。
所以我在这里为活动创建新的实体时间表和新实体,当我到Activity中的Groups数组时,我应该如何将它链接到我在数据库中已有的组?