0

我有一个核心数据模型,该模型由具有多个位置的 Trail 组成。我也在使用 RestKit。我获取线索的代码如下所示:

Trail *trail = [Trail findFirst];

我的问题是每次都会返回不同的 Trail。对 [Trail findFirst] 的三个连续调用返回:

<Trail: 0xf489c70> (entity: Trail; id: 0xf489a60 <x-coredata://77BCA7AD-4C71-437D-8A7C-C047B8E64567/Trail/p1> ; data: <fault>)

<Trail: 0xf476ca0> (entity: Trail; id: 0xf489110 <x-coredata://77BCA7AD-4C71-437D-8A7C-C047B8E64567/Trail/p1> ; data: <fault>)

<Trail: 0xf48c660> (entity: Trail; id: 0xf48c430 <x-coredata://77BCA7AD-4C71-437D-8A7C-C047B8E64567/Trail/p1> ; data: <fault>)

如果我执行 [Trail allObjects],我会看到一个 Trail 项目,下次我调用 [Trail findFirst] 时将返回该项目。如果我再次执行 [Trail allObjects],我会看到一个不同的跟踪对象,下次我调用 [Trail first] 时将返回该对象;

这让我心烦意乱。CoreData 如何每次都返回不同的实体?

4

1 回答 1

3

您正在查看错误的 ID。重要的是x-coredata://77BCA7AD-4C71-437D-8A7C-C047B8E64567/Trail/p1,所有这些都显示相同的数字。

您正在查看的 ID 是对象的地址。它们不同的对象,但它们指向相同的底层核心数据对象。

想想一个假设的数字对象。我创建了一个并将数字 1 放入其中。我创建了另一个数字对象,并在其中也放入了 1。对象相等(都包含 1)但它们不相同(具有不同地址的不同对象)。

于 2012-05-28T09:21:57.937 回答