我开发了一个iOS框架,用户可以将其与CocoaPod一起使用。但是在项目中使用它时,此行会出现错误:
let url = Bundle(for: type(of: self)).url(forResource: "file_name", withExtension: "html", subdirectory: "assets")!
这一行在框架中,错误是:
Unexpectedly found nil while unwrapping an Optional value
在框架中,我有一个名为“ assets”的文件夹和一个名为“ file_name.html”的文件。该错误仅在框架中使用时发生。
答案 0 :(得分:0)
let url = Bundle(for: type(of: self)).url(forResource: "file_name", withExtension: "html", subdirectory: "assets")!
-------------------------------^
请确保self
指向框架的类,以找到正确的包。而且您不需要使用type(of:_)
:
let bundle = Bundle(for: FrameworkClass.self)
let url = bundle.url(forResource: "file_name", withExtension: "html", subdirectory: "assets")!
答案 1 :(得分:0)
您的Cocoapod框架中似乎缺少“ file_name.html”。请在您的podspec中添加以下内容。
s.resource_bundles = {
'ResourceBundleName' => ['path/to/resources/Assets/*']
}
s.resources = "ResourceBundleName/**/*.{html,icon}"
当我将其添加到示例Framework项目的功能之一中时,您的代码似乎绝对正确。没有编译错误。
您还可以在pod中使用以下代码来访问资源。
let frameworkBundle = Bundle(for: self.classForCoder)
let bundleURL = frameworkBundle.resourceURL?.appendingPathComponent("FrameworkName.bundle")
let resourceBundle = Bundle(url: bundleURL!)
let url = resourceBundle?.url(forResource: "file_name", withExtension: "html", subdirectory: "assets")!
请参阅此链接,以获取有关如何从框架“ https://useyourloaf.com/blog/loading-resources-from-a-framework/”访问资源的更多信息。以为会对您有所帮助。