首页 > 解决方案 > NSSet 中的第一个实体具有较短的 ID,并且不保留值更改

问题描述

我有两个实体,House并且Room. 多个Rooms通过内部Home的属性连接。roomsHouse

在 Swift 中,如果我得到所有类似的成员roomsparentHouse?.rooms?.allObjects as! [Room]返回一个看起来像这样的数组......

[<Room: 0x1c4286360> (entity: Room; id: 0x1c423c1c0 <x-coredata:///Room/t7A9E5891-F454-496B-A288-8D965C6722842> ; data: {
    room = "Bedroom";
    index = 0;
    house = "0xd000000000580000 <x-coredata://DA7D7CD6-F078-49DF-8684-EDD51D3D0D90/House/p22>";
}), <Room: 0x1c028bbd0> (entity: Room; id: 0xd000000000680002 <x-coredata://DA7D7CD6-F078-49DF-8684-EDD51D3D0D90/Room/p26> ; data: {
    room = "Kitchen";
    index = 0;
    house = "0xd000000000580000 <x-coredata://DA7D7CD6-F078-49DF-8684-EDD51D3D0D90/House/p22>";
}), <Room: 0x1c028c080> (entity: Room; id: 0xd000000000740002 <x-coredata://DA7D7CD6-F078-49DF-8684-EDD51D3D0D90/Room/p29> ; data: {
    room = "Bathroom";
    index = 1;
    house = "0xd000000000580000 <x-coredata://DA7D7CD6-F078-49DF-8684-EDD51D3D0D90/House/p22>";
})]

我面临的问题是,一旦设置了第一个实体的属性,尽管所有其他实体都已正确更改index,但它不能再次更改。index我设置index为瞬态,但问题仍然存在。

经过仔细检查,第一个项目的 id 看起来与其他项目不同,也许这会起作用?

这里有什么问题,如何更改index第一项的属性?谢谢。

标签: iosswiftcore-datauikit

解决方案


最后,我转而使用 an NSOrderedSet,并且我建议任何尝试在 Core Data 项旁边使用排序索引的人也这样做。


推荐阅读