核心数据关系不会返回预期的实例

时间:2014-10-28 19:51:50

标签: core-data

我有两个NSManagedObjects,ListInstance和Item,而ListInstance与Item有一对多的关系。当我问一个ListInstance的实例的itemInstances时,它告诉我它会在一个内存地址给我一个Item,但是它给了我一个不同内存地址的Item。这会给我带来问题,因为当我更新item.listInstance的值时,它不会指向原始的ListInstance。因此,我的原始ListInstance永远不会更新。

以下lldb日志显示出现问题的地方:

(lldb) po instance.itemInstances
Relationship 'itemInstances' on managed object (0x7edec030) <ListInstance: 0x7edec030> (entity: ListInstance; id: 0x7edf55f0 <x-coredata:///ListInstance/tC5D79701-0A02-4976-B8B2-DF7DDC36442C4> ; data: {
    // properties omitted   
    itemInstances =     (
        "0x7ea0af20 <x-coredata:///Item/tC5D79701-0A02-4976-B8B2-DF7DDC36442C5>"
    );
    // properties omitted   
}) with objects {(
    <Item: 0x7ea0aee0> (entity: Item; id: 0x7ea0af20 <x-coredata:///Item/tC5D79701-0A02-4976-B8B2-DF7DDC36442C5> ; data: {
    // properties omitted   
    listInstance = "0x7edf55f0 <x-coredata:///ListInstance/tC5D79701-0A02-4976-B8B2-DF7DDC36442C4>";
    listInstanceId = <ecc075981a324305b0aa9207baeb1aeb>;
    // properties omitted   
})
)}

请注意&#34;实例&#34;认为它指向一个内存地址为0x7ea0af20的项目,但当我实际问它的值时,它会返回一个内存地址为0x7ea0aee0的项目。核心数据认为这两个对象都存在于x-coredata:/// Item / tC5D79701-0A02-4976-B8B2-DF7DDC36442C5

1 个答案:

答案 0 :(得分:0)

问题必须在别处。您必须显示相应的代码。

请注意,0x7ea0af20是托管对象ID,而不是Item对象的地址。 Item对象的地址只出现一次并且是0x7ea0aee0,而在关系日志中也提到了ID。

同样,listInstance标识为0x7edf55f0,地址为0x7edec030