10

データのインデックス作成には一意で一貫性のある ID が必要です。NSManagedObject の objectID を使用しようとしましたが、同じエンティティのように見えますが、その objectID は変化し続けています。これが一貫していないかどうかは誰にもわかりませんか?

4

1 に答える 1

20

新しいオブジェクトを保存していない場合を除き、objectIDは一意で一貫性があります。

Core Dataプログラミングガイドを引用するには:

管理対象オブジェクトIDとURI

NSManagedObjectIDオブジェクトは、管理対象オブジェクトのユニバーサルIDであり、CoreDataFrameworkでの一意化の基礎を提供します。管理対象オブジェクトIDは、単一のアプリケーションと複数のアプリケーション(分散システムの場合のように)の管理対象オブジェクトコンテキスト間で同じ管理対象オブジェクトを一意に識別します。データベースの主キーと同様に、識別子には永続ストア内のオブジェクトを正確に記述するために必要な情報が含まれていますが、詳細情報は公開されていません。フレームワークは「外部」情報を完全にカプセル化し、クリーンなオブジェクト指向インターフェースを提供します。

NSManagedObjectID *moID = [managedObject objectID]; 

オブジェクトIDには2つの形式があります。管理対象オブジェクトが最初に作成されるときに、CoreDataはそれに一時IDを割り当てます。永続ストアに保存されている場合にのみ、CoreDataは管理対象オブジェクトに永続IDを割り当てます。IDが一時的なものであるかどうかを簡単に見つけることができます。

BOOL isTemporary = [[managedObject objectID] isTemporaryID];
于 2012-05-31T03:54:46.330 に答える