在我的App扩展中,我有以下代码行:
fileURL = Bundle.main().urlForResource("Heads", withExtension: nil)!
由于解包nil可选而在运行时崩溃。这是一个简单的电话,所以它不应该失败。作为参考,这里是应用扩展的根,它显示这些图像确实捆绑在:
因此,如果我知道图像的名称,并且我知道它在捆绑中,为什么这个呼叫失败?
答案 0 :(得分:1)
调用Bundle.main()
可以获取主要包 - 包含正在运行的应用的那个。在应用扩展程序中,这不是您正在寻找的捆绑包。
要获取应用扩展程序(或框架或任何其他非应用程序目标)的捆绑包,请使用以下任一方法:
Bundle(for:)
,传递特定于应用扩展程序的类,或Bundle(identifier:)
,传递捆绑包的标识符(" com.example.myapp.myextension",例如)此外,确保构建时所需的资源会进入扩展程序包。您的扩展程序无法加载属于您应用的资源,反之亦然。