晚上好,
我做了一个包,它定义了一个类和一些资源。定义的类使用这些资源。
Package
Sources
┝ UnicodeData
| ┝ flatUnicode.txt
| ┕ glyphNames.txt
┕ UnicodeNames
┕ UnicodeNames.swift
在包清单中,它们定义为:
....
targets: [
.target(
name: "UnicodeNames",
resources: [
.copy("UnicodeData")]
),
....
我通过以下方式调用课堂资源:
let bundle = Bundle(for: Self.self)
if let myResource = bundle.path(forResource: "flatUnicode", ofType: "txt") {
....
我可以将包添加到应用程序,它在 * 框架、库和嵌入内容 * 和 * 包依赖关系 * 下可见。我可以编译并运行它,但始终找不到资源,应用程序崩溃。当我查看应用程序内部时(从Finder中 * 显示包内容 *,包提供的资源不存在于内部)
如何将资源从包复制到应用程序?
1条答案
按热度按时间soat7uwm1#
来自文档:
当您构建Swift软件包时,Xcode会将每个目标视为Swift模块。如果目标包含资源,Xcode会在Bundle上创建一个资源包和一个内部静态扩展,以便为每个模块访问该资源包。使用该扩展来查找软件包资源。例如,使用以下命令来检索与软件包捆绑在一起的属性列表的URL:让设置URL =包.模块. url(对于资源:"设置",带有扩展名:"plist")
如果你想让依赖Swift软件包的应用程序可以使用软件包资源,请为它声明一个公共常量。例如,使用下面的代码向使用Swift软件包的应用程序公开属性列表文件:
let settingsURL = Bundle.module.url(forResource: "settings", withExtension: "plist")