gpt4 book ai didi

ios - 如何从 iOS 静态库访问 Bundle

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:02:12 27 4
gpt4 key购买 nike

我正在使用 Core Data 框架开发静态库。遗憾的是,我无法访问生成的 Bundle/.momd 文件。

我做了什么:

  • 创建我的数据模型(Model.xcdatamodeld 文件)
  • 创建一个新的 Bundle 目标(名为 sdkResources),我在编译源中添加了我的 xcdatamodeld 文件并链接了 CoreData.framework
  • 在我的 sdk 目标中,我将 sdkResources.bundle 放在“复制 bundle 资源”部分
  • 编辑我的 sdk 方案并在构建部分添加 sdkResources 目标

我不工作的代码:

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 开发方面没有太多经验,我正在尽力了解发生了什么,但现在对我来说这是一个死胡同 :(

问候

  • 编辑我的项目配置/屏幕

Bundle build phase

sdk scheme configuration

Sdk build phase

我不知道为什么 sdkResources.bundle 是红色的..希望这就是您要的,谢谢。

编辑:修复 sdkResources.bundle 的路径后 enter image description here

编辑:

好的,我真的很接近解决方案,我的包已成功复制到我的最终应用程序中,但我无法访问我的模型,并且它仅在我使用 [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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com