gpt4 book ai didi

objective-c - 如何确定/控制托管对象模型 (.mom) 文件的存储位置?

转载 作者:行者123 更新时间:2023-12-03 17:16:23 26 4
gpt4 key购买 nike

大家好,我有这个预加载器(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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com