2011-10-05 51 views
0

我有案件,我有项目的数据库。每个项目可以有多个位置。NSPredicate + itemLocations ==位置

现在2个问题:

我应该创建其中每个项目被链接到几个位置,或者有一种方法将其记录到一个单一的字符串昏迷例如@“45,34的关系, 32“(数字是位置)。

如果我建立了这种关系,那就引发了另外一个问题。我从一个XML记录项目,所以我应该如何形成并记录该项目,因为在这种情况下,场景可能如下:

项目1--具有位置1,2,3 项目2-具有位置1,2 ,5

以及如何将其插入数据库。

如何真正形成谓语

会是像水木清华

@ “brand_id LIKE%@和item_stock!= 0 AND item_location.locations ==%我”

我希望上面不会混淆会真正体会到回应。

回答

0

这是当需要的关系(在这种情况下“多到多的”我明白,因为每个项目可以有多个位置,并且每个位置可被分配给多个项目)

    一个典型的例子
  1. 创建2个实体“项”和“位置”
  2. 对于“项目”创建关系“位置”,这是一个一对多的关系, “位置”
  3. 执行相同的“位置”单位(但反之亦然)

这样的结构现在可以存储多对多的关系。

现在查询这样的结构,你可以做这样的不便(给你的“产品”实体搜索):

@"brand_id == %@ AND item_stock != 0 AND ANY locations == %d"

当你的数据来自于如XML,你应该解析出来并分别添加每个位置,如果位置表中已存在此位置,只需将其添加到项目的关系集

+0

Thanx Nick即可快速响应。 –

+0

还有一个问题。关于XML。我看到有方法自动创建了Managed Object类。但我仍然无法弄清楚如何实际更新设置关系,而不是仅仅添加或删除它。以及它是否应该是反向关系。 –

+0

是的,我认为在你的情况下它应该是一个反比关系。我的意思是“更新而不是添加/删除”,举例说明如下:假设你有一个位置7,并且你有一个已经拥有该位置的物品。因此,不是将7添加到项目位置列表,而是先检查它是否已经存在,然后才添加(否则跳过操作)。还要确保7已被记录为位置实体。最后,在我的查询中有一个输入错误,它应该是'ANY locations ==%@',因为位置不再是一个整数,而是一个核心数据实体 – Nick