大家好,我有这个预加载器(Xcode 命令行实用程序项目),可以预加载我的 iPhone 应用程序的 sqlite 存储,到目前为止它一直工作得很好,因为它总是给我一个不兼容的存储错误。因此,我不会在预加载器中引用 .mom 文件,而是在预加载器中创建它,以希望绕过此问题。这就是我的问题所在,如何确定预加载器存储我要创建的 .mom 文件的位置?有什么方法可以告诉它把它放在哪里吗?
下面是一些相关的代码片段。
从 iPhone 应用程序内: /** 返回应用程序的托管对象模型。 如果该模型尚不存在,则通过合并应用程序包中找到的所有模型来创建该模型。 */ - (NSManagedObjectModel *)managementObjectModel {
if (managedObjectModel != nil) {
return managedObjectModel;
}
//managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];
NSURL *modelURL = [NSURL fileURLWithPath:@"path/to/Parking.mom"];
managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
#pragma mark TODO change below line to search for your project's mom file
NSString *path = [[NSBundle mainBundle] pathForResource:@"Parking" ofType:@"mom"];
return managedObjectModel;
}
从预加载器(Xcode 命令行实用程序项目)中:
NSManagedObjectModel *managedObjectModel(NSString* momPath) {
static NSManagedObjectModel *model = nil;
if (model != nil) {
return model;
}
model = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];
//NSURL *modelURL = [NSURL fileURLWithPath:momPath];
//model = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
return model;
}
如果您仔细查看代码,您可以看到我在哪里交换了每个文件中的内容。
提前致谢!
最佳答案
使用 -initWithContentsOfURL: 从您喜欢的任何地方读取托管对象模型文件。事实上,仅仅这样做可能会解决您的错误...可能是您的 bundle 中有一个旧的模型文件,并且使用 +mergedModelFromBundles: 将其添加到您的其他模型文件中。
关于objective-c - 如何确定/控制托管对象模型 (.mom) 文件的存储位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5440745/