是否可以在同一个项目中提供两个xcdatamodeld核心数据并根据条件加载每个数据?
我有BTPModel.xcdatamodeld和FTModel.xcdatamodeld
根据评论,下面的这一行是这样的:
NSManagedObjectModel model = [NSManagedObjectModel mergedModelFromBundles:nil];
// looks up all models in the specified bundles and merges them; if
nil is specified as argument, uses the main bundle
我可以这样做吗? (伪代码)
if (config == @"FT") {
model = [NSManagedObjectModel load:@"FTModel.xcdatamodeld"];
} else {
model = [NSManagedObjectModel load:@"BPTModel.xcdatamodeld"];
}
更新:
我现在试过这个
NSURL *url = [[NSBundle mainBundle] URLForResource:@"F11iModel" withExtension:@"xcdatamodeld"];
没有运气.网址仍为空.
UPDATE
扩展是妈妈.现在它有效!
NSURL *url = [[NSBundle mainBundle] URLForResource:@"F11iModel" withExtension:@"momd"];
最佳答案 当然可以.只需注意以下几点:
某些加载方法不能使用initWithContentsOfURL来加载特定模型.您将获得主包的URLForResource的URL.您可以根据配置信息将不同的资源名称传递给它.
我建议您也使用不同的持久性存储来确保没有尝试使用错误的模型打开存储(这将使您的应用程序崩溃).