私のアプリでは、Core Data を使用しない追加の sqlite データベースと共に Core Data を使用しています。この追加のデータベースには、NSManagedObject
各インスタンスの を介してインスタンスへの参照を格納する列がありますNSManagedObjectID
。
次のように、インスタンスobjectId
をストレージの文字列として取得しています。
instance.objectID.URIRepresentation.absoluteString
これにより、次のような文字列が得られます。
x-coredata://EE13EA1E-D5F4-4E38-986D-3F4B0B03AEE4/ClassName/p658
後で次のNSManagedObject
ようにインスタンスをフェッチするために使用できます。
[persistentStoreCoordinator managedObjectIDForURIRepresentation:[NSURL URLWithString:uriString]];
これらの URI 文字列は冗長で冗長な情報が含まれているため、データベースのスペースを節約し、クエリのパフォーマンスを向上させるために、それぞれの独自の側面だけを保存したいと考えています。したがって、上記の例では、URI 文字列全体ではなく「658」だけです。
したがって、最初の質問は次のとおりです。 の一意の末尾だけを抽出する良い方法は何NSManagedObjectID
ですか? 次に、それを保存したら、後でそれを使用してインスタンスをフェッチするにはどうすればよいでしょうか?
文字列操作は気持ち悪いので避けたいのですが、それしか方法がなければ検討します。私の唯一の混乱は、上記の例で「EE13EA1E-D5F4-4E38-986D-3F4B0B03AEE4」の部分がどこから来ているかです。有効な URI を再構築するためにその値にアクセスするにはどうすればよいですか?