gpt4 book ai didi

ios - NSBundle bundleWithIdentifier 为静态框架和资源包返回 null

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:31:37 39 4
gpt4 key购买 nike

我正在尝试创建一个静态框架,它将使用一些图像在其 View 中显示。我通过在我的 sdk 项目中添加目标从 XCode 创建了一个 MyFrameworkBundle.bundle。在包中添加我的所有图像并创建包并为该目标提供包标识符 my.frameworkbundle。现在我正尝试在我的框架中获取该包,如下所示:

NSBundle * mybundleRef = [NSBundle bundleWithIdentifier:@"my.frameworkbundle"];

然后我将这些框架和资源包放在另一个项目中,并尝试使用上面的代码运行函数。它总是返回空值。即使我尝试像上面的代码那样获取框架,即:

NSBundle * mybundleRef = [NSBundle bundleWithIdentifier:@"my.framework"];

这也给了我null。但是,如果我将此框架从静态更改为动态,它总是会给我正确的 bundle 。因为我要将它与 Unity 一起使用,所以我不想要一个动态框架来避免后处理脚本。

我也试过下面的代码:

NSString *bundleString =[[NSBundle mainBundle] pathForResource:@"MyFrameworkBundle" ofType:@"bundle"];
NSBundle * PlayCacheBundle = [NSBundle bundleWithPath:bundleString];

但是报错

no suitable image found

系统详情:

  • Xcode:8.2.1
  • 苹果操作系统:10.12(塞拉利昂)

最佳答案

因为框架是静态链接的,所以类似乎属于主包,因此 +[NSBundle bundleForClass:] 不起作用。

您可以使用以下方法创建您自己的指向框架的包:


NSString *fwPath = [[[NSBundle mainBundle] privateFrameworksPath] stringByAppendingPathComponent:@"Shared.framework"];
NSBundle *bundle = [NSBundle bundleWithPath:fwPath];

我已经在一个空项目上进行了测试,它可以工作,并且允许加载 NIB 文件。我没有测试 Assets 目录,但我怀疑这是一个有效的 NSBundle 引用,你应该没问题。

关于ios - NSBundle bundleWithIdentifier 为静态框架和资源包返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42555027/

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