在我的应用程序扩展中,我有以下代码行:
fileURL = Bundle.main().urlForResource("Heads", withExtension: nil)!
由于解包一个 nil 可选值而在运行时崩溃。这是一个简单的调用,所以它不应该失败。作为引用,这是应用程序扩展的根目录,它显示这些图像确实捆绑在: 中。
所以如果我知道图像的名称,并且我知道它在包中,为什么这个调用会失败?
最佳答案
调用 Bundle.main()
可以获得主包——包含正在运行的应用程序的包。在应用程序扩展中,这不是您要查找的 bundle 。
要为您的应用程序扩展(或框架,或任何其他非应用程序目标)获取 bundle ,请使用:
-
Bundle(for:)
,传递特定于应用程序扩展的类,或者 -
Bundle(identifier:)
,传递包的标识符(例如“com.example.myapp.myextension”)
此外,确保在构建时将所需的资源放入扩展包中。您的扩展程序无法加载属于您的应用程序的资源,反之亦然。
关于ios - 应用扩展找不到图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37913320/