【发布时间】:2012-09-20 15:14:23
【问题描述】:
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。
【问题讨论】:
-
[link]developer.apple.com/library/mac/#documentation/Cocoa/Reference/… 似乎暗示我应该能够做到这一点 - 但我看不出如何:
-
协调器提供对其底层对象存储的访问权限。您可以在第一次添加对象存储时检索对象存储(使用 addPersistentStoreWithType:configuration:URL:options:error:),或者使用 persistentStoreForURL: 或 persistentStores。例如,这使您可以确定是否已添加商店,或两个对象是否来自同一商店。
-
为什么特别需要多个数据库?
-
因为这个应用程序用户正在通过 iTunes 添加他们自己的数据库。我希望能够向他们展示哪些数据来自什么来源。
-
那么,您是在动态生成 NSManagedObjectModel 吗?
标签: core-data nsmanagedobjectcontext nspersistentstore