0

多くの場所を持つトレイルで構成されるコアデータモデルがあります。RestKitも使用しています。トレイルを取得するための私のコードは次のようになります。

Trail *trail = [Trail findFirst];

私の問題は、これが毎回異なるトレイルを返すことです。[Trail findFirst]を3回続けて呼び出すと、次のようになります。

<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]を実行すると、次に[TrailfindFirst]を呼び出したときに返される単一のTrailアイテムが表示されます。[Trail allObjects]をもう一度実行すると、次に[Trailfirst]を呼び出したときに返される別のTrailオブジェクトが表示されます。

これは私の心を曲げています。CoreDataはどのようにして毎回異なるエンティティを返すことができますか?

4

1 に答える 1

3

あなたは間違ったIDを見ています。重要なのはx-coredata://77BCA7AD-4C71-437D-8A7C-C047B8E64567/Trail/p1で、どれも同じ数字を示しています。

見ている ID は、オブジェクトのアドレスです。これら異なるオブジェクトですが、基になる同じ Core Data オブジェクトを指しています。

架空の数値オブジェクトを考えてみてください。私はそれを作成し、その中に数字の 1 を入れます。別の数値オブジェクトを作成し、そのオブジェクトにも 1 を入れます。オブジェクトは等しい (どちらも 1 を含む) が、同じではない (異なるアドレスを持つ異なるオブジェクト)。

于 2012-05-28T09:21:57.937 に答える