0

私がやろうとしていることが Core Data ではできない可能性があるので、もしそうなら教えてください。

私は ManagedObjectContext を持っており、 addPersistentStoreWithType を介してそれらを追加することにより、sqlite データベースを導入しています。. .

したがって、いくつかのデータベースを追加します。たとえば、1 ~ 5 としましょう。その後、データベース内のデータに対してフェッチを実行します。検索しているソースを言う必要がないのは素晴らしいことです。結果が戻ってきて、それらがマージされるだけです。

ただし、各結果がどのストアから出てきたのか知りたい場合はどうすればよいでしょうか? それは可能ですか?結果が見つかった「ファイル」を知りたいのと同じように、私はあまりにも「古い学校」だと考えていますか?

ヘルプ/アドバイスをいただければ幸いです。

ここにいくつかのコードがあります:

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"PMBEntity"
    inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc]
                                    initWithKey:@"Name" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];
[fetchRequest setReturnsDistinctResults:YES];
[sortDescriptor release];

NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];

上記を参照してください。XCode で作成した Core Data NSManagedObjectModel である PMBEntity があります。おわかりのように、(多くの) フィールドの 1 つが「名前」です。ここでは、すべての一意の名前を検索し、名前で並べ替えています。

私に返されるのは、これらの PMBEntity オブジェクトの NSArray です。

4

2 に答える 2

2

persistentStore管理対象オブジェクトの属性の属性が必要objectIDです。これにより、管理対象オブジェクトを保持する永続ストアへの URL が提供されます。

ただし、それは、オブジェクトが永続ストアに少なくとも 1 回保存された後でのみです。それ以前は、ストアを指していない一時的な UUID があります。新しい輸入店がどのように影響するかはわかりません。読み込み時に永続的な ID を取得する可能性がありますが、まだテストしていません。

于 2012-09-21T00:02:43.433 に答える
0

さて、フェッチすると、結果として NSManagedObject インスタンスが得られます。NSManagedObject インスタンスには、その NSManagedObjectContext への参照があります。その NSManagedObjectContext には、persistentStoreCoordinator への参照があります。NSPersistentStoreCoordinator インスタンスには、永続ストアと NSManagedObjectModel への参照があります。

于 2012-09-20T15:19:30.283 に答える