我为我的应用程序重新构建了核心数据模型,超出了轻量级迁移的工作范围。因此,我现在在应用程序包中有两个核心数据模型,我需要分别访问每个模型(用于常规的核心数据设置和手动迁移),这意味着[NSManagedObjectModel mergedModelFromBundles:nil]是不合适的/不能工作的。问题是,我无法获得任何一个模型的URL,这使我无法使用[NSManagedObjectModel alloc] initWithContentsOfURL:实例化它们。这些是我使用的方法,它们都返回NULL:
- (NSURL *)currentModelURL{
return [[NSBundle mainBundle] URLForResource:@"NewModel" withExtension:@"momd"];
}
- (NSURL *)oldModelURL{
return [[NSBundle mainBundle] URLForResource:@"OldModel" withExtension:@"momd"];
}事实上,当我在其他应用程序上尝试这个方法时,即使是有一个模型的应用程序,它也不会返回模型URL。这很奇怪,因为我的应用程序的前一个版本运行得很好,使用上面的方法通过URL获得了模型.不是由[NSManagedObjectModel mergedModelFromBundles]。
我阅读了this和this,并尝试了所提出的解决方案,包括确保将模型添加到资源列表中,以便在构建阶段复制到包中,验证区分大小写的文件名,以及在URLForResource方法中更改文件扩展名。我想我可以将完全新的模型呈现为旧模型的新版本,只需防止持久性存储选项中的自动迁移.但我的方法应该奏效。为什么突然不可能在应用程序包中获得模型的URL?
发布于 2016-11-13 09:27:38
该方法是100%工作的,因此文件根本不存在;)
要么你有错..。或者cAsE是错误的,或者您的模型没有版本(!)
编译应用程序并查看%APPP%/Resources/。有OldModel.momd文件夹吗?
https://stackoverflow.com/questions/40572136
复制相似问题