知道查询来自哪个持久存储

时间:2012-09-20 15:14:23

标签: core-data nsmanagedobjectcontext nspersistentstore

我可能无法使用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];

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

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

好吧,当你获取时,你有NSManagedObject实例作为结果。 NSManagedObject实例具有对其NSManagedObjectContext的引用。 NSManagedObjectContext具有对其persistentStoreCoordinator的引用。 NSPersistentStoreCoordinator实例具有对持久存储和NSManagedObjectModel的引用。