- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 Core Data 框架开发静态库。遗憾的是,我无法访问生成的 Bundle/.momd 文件。
我做了什么:
我不工作的代码:
NSString *staticLibraryBundlePath = [[NSBundle mainBundle] pathForResource:@"sdkResources" ofType:@"bundle"];
NSURL *staticLibraryMOMURL = [[NSBundle bundleWithPath:staticLibraryBundlePath] URLForResource:@"Model" withExtension:@"momd"];
_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:staticLibraryMOMURL];
返回:
[FAILED], NSInvalidArgumentException "Cannot create an NSPersistentStoreCoordinator with a nil model" raised
问题似乎是“mainBundle”访问,因为当我运行我的 sdk 测试时下面的代码正在工作(至少没有错误)
NSBundle *bundle = [NSBundle bundleForClass:[self class]];
NSURL *staticLibraryMOMURL = [bundle URLForResource:@"Model" withExtension:@"momd"];
_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:staticLibraryMOMURL];
但是当我想在另一个应用程序中使用我的 sdk(使用 podFile 文件)时,我无法访问我的包并得到相同的错误:/
我已经阅读并尝试了很多,但似乎没有任何效果。我在 iOS 开发方面没有太多经验,我正在尽力了解发生了什么,但现在对我来说这是一个死胡同 :(
问候
我不知道为什么 sdkResources.bundle 是红色的..希望这就是您要的,谢谢。
编辑:修复 sdkResources.bundle 的路径后
编辑:
好的,我真的很接近解决方案,我的包已成功复制到我的最终应用程序中,但我无法访问我的模型,并且它仅在我使用 [NSBundle bundleForClass:[self 时在我的 sdk 测试中工作class]] 而不是 [NSBundle mainBundle]。这可能只是一个愚蠢的配置,但是......是的......我会继续挖掘!
最佳答案
好的,我明白了!
经过(太多)小时搜索将我的模型放入一个 Bundle 中后,我决定将它保留在我的 sdk 中并检查我的 podspec 配置(因为它在我的 sdk 测试中工作但在我的最终项目中没有工作)
这是我的解决方案,在我刚刚添加的 podspec 文件中:
s.resources = 'sdk/**/*.{xcdatamodeld,xcdatamodel}'
s.preserve_paths = 'sdk/**/*'
s.framework = 'CoreData'
基本上,我只是将我的模型添加为资源和 CoreData 框架。至少我学到了很多关于 Bundle 和 podspec 配置的知识......
关于ios - 如何从 iOS 静态库访问 Bundle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28520705/
我是一名优秀的程序员,十分优秀!