CoreData:无法加载NSManagedObjectModel。 nil是一个非法的URL参数

时间:2017-02-07 14:53:27

标签: ios objective-c core-data

Appstore中的实时应用程序因以下原因崩溃

Fatal Exception: NSInvalidArgumentException
CoreData: Cannot load NSManagedObjectModel. nil is an illegal URL parameter

以下是相应的代码。

- (NSManagedObjectModel *)managedObjectModel {
if (_managedObjectModel != nil) {
    return _managedObjectModel;
}

NSString *bundlePath = [[NSBundle mainBundle]pathForResource:@"DBResources" ofType:@"bundle"];
NSBundle *bundle = [NSBundle bundleWithPath:bundlePath];
NSURL *modelURL = [bundle URLForResource:@"Profile" withExtension:@"momd"];
_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
return _managedObjectModel;
}

我做了基本的检查,比如确保我们的momd文件具有相同的名称和部分资源。

  • 奇怪的部分是它仅在iPhone 5,5c,4s(基本上所有armv7s)架构上崩溃,iOS 10及更高版本。
  • 我在Hockeyapp和Testflight内部上传的相同版本/内部版本号不会崩溃

为什么它只会从Appstore崩溃的原因? 任何原因导致它们在这些设备上崩溃而不是iphone 5s及以上版本?

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

事实证明,的原因是" app thinning"。

我们刚遇到一个案例,其中存在一个' arm64'在我们的框架资源.bundle info.plist(作为架构)中输入只会导致armv7s设备在最终安装的IPA中剥离捆绑包。

由于资源不需要架构(特别是mom / momd文件),从.bundle info.plist中删除该架构条目可以解决问题。

由于在幕后进行了细化,它在应用程序商店版本中出现了,并且在通过Hockey / Fabric进行部署时通常不会发生。

希望这有帮助 - @neelesh我知道你的问题已经很久了。