Core data 了解查询来自哪个持久存储

Core data 了解查询来自哪个持久存储,core-data,nsmanagedobjectcontext,nspersistentstore,Core Data,Nsmanagedobjectcontext,Nspersistentstore,我试图做的事情可能无法用核心数据完成,因此,如果是,请让我知道 我有一个ManagedObjectContext,我通过addPersistentStoreWithType添加sqlite数据库来引入它们 因此,我将添加一些数据库,比如说1到5,然后对数据库中的数据执行抓取。很好,我不必说我在搜索什么来源——结果就回来了,它们被合并在一起了 但是,如果我想知道每个结果来自哪个存储,该怎么办?这可能吗?我是不是太“老派”了,我想知道结果是什么“文件” 如能提供帮助/建议,将不胜感激 下面是一些代码

我试图做的事情可能无法用核心数据完成,因此,如果是,请让我知道

我有一个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];
请看,上面我有一个PMBEntity,它是我通过XCode创建的核心数据NSManagedObjectModel。如您所知,许多字段中有一个是“Name”。在这里,我搜索所有唯一的名称并按名称排序


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

那么,当您获取时,结果就是NSManagedObject实例。NSManagedObject实例具有对其NSManagedObject上下文的引用。该NSManagedObjectContext具有对其persistentStoreCoordinator的引用。NSPersistentStoreCoordinator实例具有对持久存储和NSManagedObjectModel的引用。

您需要托管对象的
objectID
属性的
persistentStore
属性。这将为您提供保存托管对象的持久存储的URL


但是,只有在对象至少保存一次到持久性存储之后,才会执行此操作。在此之前,它有一个临时UUID,它不指向存储。我不知道新的进口商店对它有什么影响。读入时可能会获取一个永久ID,但我还没有对其进行测试。

我可以看到在持久存储中获取的方法,但它返回一个正在管理的持久存储数组,而不是它从中提取的特定持久存储数组(如果在我心目中是“文件”)。你能进一步解释一下吗?
NSArray*foo=[[p managedObjectContext]persistentstorecordinator]persistentStores]返回我添加的所有3个持久存储的数组-不是它从中找到此对象“p”的数组。您需要查找存储元数据,并查找您获取的记录是否包含在持久存储的元数据中。您能给我一个指向这些方法的指针吗?我意识到我需要做什么的概念,我只是不知道如何去做。[link]似乎暗示我应该能够做到这一点——但我看不到如何做到:协调器允许访问其底层对象存储。您可以在首次添加对象存储时检索对象存储(使用addPersistentStoreWithType:configuration:URL:options:error:),或使用persistentStoreForURL:或persistentStores。例如,这允许您确定是否已经添加了一个存储,或者两个对象是否来自同一个存储。为什么您特别需要有多个数据库?因为对于此应用,用户通过iTunes添加自己的数据库。我希望能够向他们展示什么数据来自什么来源。那么,您正在动态生成NSManagedObjectModel?太棒了!这就是我要找的。谢谢:
[[instanceOfNSManagedObject]objectID]persistentStore]
有效。非常感谢。