我有一个名为"Model"的模型文件.如果我将其重命名为"SomeOtherName",它就不会被加载.
initWithContentsOfURL 返回nil并且:
mergedModelFromBundles: [NSArray arrayWithObjects:[NSBundle mainBundle], nil];
Run Code Online (Sandbox Code Playgroud)
...崩溃因为它认为这个阵列中有零.
我被允许重命名我的模型,所以有什么不对吗?我无法提供更多信息,因为我没有:P SomeOtherName模型放在包中,它应该加载得很好.
谢谢
Mar*_*ark 27
我刚遇到同样的问题.这是我解决它的方式:
单独重命名模型文件是不够的,因为它不会重命名对当前模型版本的引用.
事实证明,模型版本存储在单独的plist文件中.只需在文本编辑器中打开它,然后将旧名称更改为新的模型文件名.
文件: YourNEWModelFile.xcdatamodeld/.xccurrentversion
<plist version="1.0">
<dict>
<key>_XCCurrentVersionName</key>
<string>YourModelFile.xcdatamodel</string> <-- Change this to YourNEWModelFile
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)
请注意,只有在开发期间重命名模型文件时才应执行此操作.要将数据模型迁移到新版本,请遵循Core Data文档.
你的核心数据初始化代码是什么样的?它应该看起来像这样:
NSManagedObjectModel *managedObjectModel = nil;
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"SomeOtherName" withExtension:@"mom"];
NSAssert(modelURL != nil);
managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
Run Code Online (Sandbox Code Playgroud)