URL 到 NSManagedObjectModel 为 NULL
URL to NSManagedObjectModel is NULL
我重新设计了我的应用程序的核心数据模型,超出了轻量级迁移的工作范围。所以我现在在应用程序包中有两个核心数据模型,我需要单独访问每个模型(用于常规核心数据设置和手动迁移),这意味着 [NSManagedObjectModel mergedModelFromBundles:nil]
不合适/不起作用。问题是我无法获得任一模型的 URL,这使我无法使用 [NSManagedObjectModel alloc] initWithContentsOfURL:
实例化它们。这些是我正在使用的方法,它们都是 return NULL:
- (NSURL *)currentModelURL{
return [[NSBundle mainBundle] URLForResource:@"NewModel" withExtension:@"momd"];
}
- (NSURL *)oldModelURL{
return [[NSBundle mainBundle] URLForResource:@"OldModel" withExtension:@"momd"];
}
事实上,当我在其他应用程序上尝试此方法时,即使是具有单一模型的应用程序,它也永远不会 return 模型 URL。这很奇怪,因为我的应用程序 运行 的先前版本通过使用上述方法通过 URL 获取模型就可以了......而不是通过 [NSManagedObjectModel mergedModelFromBundles]
.
我已阅读 and this 并尝试了建议的解决方案,其中包括确保将模型添加到资源列表中以在构建阶段复制到包、验证区分大小写的文件名,以及使用URLForResource
方法中的文件扩展名。我想我可以将全新模型呈现为旧模型的新版本,并简单地防止持久存储选项中的自动迁移......但我的方法应该有效。为什么应用程序包中的模型突然无法获得 URLs?
该方法 100% 有效,所以文件根本不存在 ;)
您输入错误.. 或 cAsE 错误或您的模型未版本化 (!)
编译应用程序并在 %APPP%/Resources/ 中查找。有 OldModel.momd 文件夹吗?
我重新设计了我的应用程序的核心数据模型,超出了轻量级迁移的工作范围。所以我现在在应用程序包中有两个核心数据模型,我需要单独访问每个模型(用于常规核心数据设置和手动迁移),这意味着 [NSManagedObjectModel mergedModelFromBundles:nil]
不合适/不起作用。问题是我无法获得任一模型的 URL,这使我无法使用 [NSManagedObjectModel alloc] initWithContentsOfURL:
实例化它们。这些是我正在使用的方法,它们都是 return NULL:
- (NSURL *)currentModelURL{
return [[NSBundle mainBundle] URLForResource:@"NewModel" withExtension:@"momd"];
}
- (NSURL *)oldModelURL{
return [[NSBundle mainBundle] URLForResource:@"OldModel" withExtension:@"momd"];
}
事实上,当我在其他应用程序上尝试此方法时,即使是具有单一模型的应用程序,它也永远不会 return 模型 URL。这很奇怪,因为我的应用程序 运行 的先前版本通过使用上述方法通过 URL 获取模型就可以了......而不是通过 [NSManagedObjectModel mergedModelFromBundles]
.
我已阅读 URLForResource
方法中的文件扩展名。我想我可以将全新模型呈现为旧模型的新版本,并简单地防止持久存储选项中的自动迁移......但我的方法应该有效。为什么应用程序包中的模型突然无法获得 URLs?
该方法 100% 有效,所以文件根本不存在 ;)
您输入错误.. 或 cAsE 错误或您的模型未版本化 (!)
编译应用程序并在 %APPP%/Resources/ 中查找。有 OldModel.momd 文件夹吗?