0

我尝试做的事情可能无法用 Core Data 完成,所以如果是这样,请告诉我。

我有一个 ManagedObjectContext 并且我通过 addPersistentStoreWithType 添加它们来引入 sqlite 数据库。. .

所以我将添加一些数据库 - 假设在 1 到 5 之间,然后我对数据库中的数据执行提取。太好了,我不必说我正在搜索哪些来源 - 结果刚刚回来,它们被合并在一起。

但是,如果我知道每个结果来自哪个 Store 怎么办?这甚至可能吗?我是不是想得太“老派”了,比如我想知道找到了哪些“文件”?

帮助/建议将不胜感激。

这是一些代码:

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];

看,上面我有一个 PMBEntity,它是我通过 XCode 创建的核心数据 NSManagedObjectModel。如您所知,(众多)字段之一是“名称”。在这里,我正在搜索所有唯一名称并按名称排序。

返回给我的是这些 PMBEntity 对象的 NSArray。

4

2 回答 2

2

您想要persistentStore托管对象的属性的objectID属性。这将为您提供一个指向保存托管对象的持久存储的 URL。

但是,这只是在对象至少保存一次到持久存储之后。在此之前,它有一个不指向商店的临时 UUID。我不确定新的进口商店如何影响它。读入时可能会获得永久 ID,但我尚未对其进行测试。

于 2012-09-21T00:02:43.433 回答
0

好吧,当您获取时,您将获得 NSManagedObject 实例作为结果。NSManagedObject 实例具有对其 NSManagedObjectContext 的引用。那个 NSManagedObjectContext 引用了它的 persistentStoreCoordinator。NSPersistentStoreCoordinator 实例具有对持久存储和 NSManagedObjectModel 的引用。

于 2012-09-20T15:19:30.283 回答