English 中文(简体)
如何与核心数据中可选的值建立定序关系?
原标题:How can I make an ordered relation with values optional in Core Data?

我的汽车客体有四个客体。 汽车需要知道乘客坐在哪里, 但反向关系不合理, 即 passenger SeatOccupant 符合逻辑, 但carwessFrontPassengerSeasetImSittingIn 似乎毫无意义( 那么其他三个座位需要另外三个座位), 我宁愿只有一个 carimSittingIn

CoreData建议我对一切事物都有反向关系, 除了“ 高级” 的情况下, 所以我尽量遵守。 所以我想做一个有命令的< code> occumans 关系, 其中座椅0是司机, 1 是前座乘客, 2 是后座司机, 3 是后座乘客。 问题发生于我没有任何人坐1号座位, 但是有人坐2号或3号座位, 因为我不能在阵列中设置占位符 。

在保持反向关系的同时,用什么清洁方式执行这个有秩序的、可能空座位问题,而不拥有所有这些多余的无谓财产?

最佳回答

您可以通过以下两种方式做到这一点:提供一个代表未占用座位的物体,或者创建一个包含参与者的中间的 Seat 对象。

核心数据模型以 NSODERedSet 的形式订购关系。 NSODERedSet 存储相毗的物体(即它不会包含任何 nil 值) 您可以创建一个代表未占用座位的假对象。 您需要跟踪“ null occupant” 对象, 我想象您最终会遇到许多复杂的 if ([ocupant is NullOccupant]) 逻辑来处理这个特殊案例。

另一个解决办法,我认为是清洁的,是有三个实体: car , Seat Occupant 。汽车与 Seat 有多种关系,而 Seat 则与 Occupant 有一对一的关系。您的模型将像这样:

Car <-->> Seat <<--> Occupant
问题回答

仅拥有占位对象包含一个座位数属性( 您可以使用您在上面的想法中所用的整数), 这是您为每个占位者设置的 。

这样你就可以有1 -4的占位器 在你订购的设置中, 没有“空位”点被作为占位符使用。

我就会在你的车牌上 找到一种方法 比如:

- (BOOL)addOccupant:(Occupant *)occupant {
    // Make sure that occupant.seatNumber is valid.
    // Check your existing occupants to make sure nobody is already in that seat.
    // Add them to the relationship (your ordered set) in the proper order.
}




相关问题
Code sign Error

I have created a new iPhone application.I have two mach machines. I have created the certificate for running application in iPhone in one mac. Can I use the other mac for running the application in ...

ABPersonViewController Usage for displaying contact

Created a View based Project and added a contact to the AddressBook using ABAddressBookRef,ABRecordRef now i wanted to display the added contact ABPersonViewController is the method but how to use in ...

将音频Clips从Peter改为服务器

我不禁要问,那里是否有任何实例表明从Peit向服务器发送音响。 I m不关心电话或SIP风格的解决办法,只是一个简单的袖珍流程......

• 如何将搜查线重新定位?

我正试图把图像放在搜索条左边。 但是,问题始于这里,搜索条线不能重新布署。

热门标签