检索核心数据关系中的数据

时间:2015-07-05 19:18:28

标签: ios objective-c uitableview core-data uiview

我正在开发一个项目,该项目提供了一种收集特定地址房间数据的方法。我在房间和地址表之间的数据模型中建立了关系。该项目目前提供UITableView个地址,用户可以通过地址向下钻取到另一个UItableView查看房间。

这是我无能为力的地方。如果没有房间,则会显示自定义UIView以输入房间数据。用户在每个数据点的UIView中输入数据,然后按保存。保存按钮的IBAction当前设置相关表中每个键的值。我假设它在这里,我需要建立一个地址和它的房间之间的关系,但我找不到正确的方法来做到这一点。我在setValue方法中尝试了NSSet setWithObject:

[newRoom setValue:[NSSet setWithObject:_address] roomName.text forKey:@"roomName"];

Xcode要我在roomName和文字之间插入一个冒号。

最终,我希望用户能够选择地址并管理该地址的房间数据,但我不确定如何建立地址与房间之间的关系。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

听起来AddressRoom关系是一对多关系:每个Address可以有多个Rooms,而每个Room只涉及一个Address。因此Address实体应该有rooms属性来表示关系,而Room实体也应该具有address属性。 (如果您对这些属性使用了不同的名称,请在必要时进行修改。)

当用户在地址的表视图中选择一行时,您将确定相应的Address对象。我们称之为chosenAddress。然后,您的第二个表视图应仅显示与Room相关的chosenAddress个对象。当您创建新的Room对象时,我们将其称为newRoom,您可以与chosenAddress建立关系:

[newRoom setValue:chosenAddress forKey:@"address"];

或者,如果您为AddressRoom创建了NSManagedObject子类:

newRoom.address = chosenAddress;

请注意,CoreData会自动设置反比关系,将newRoom添加到chosenAddress.rooms给出的集合中。