xcode 如何将资源从Package复制到App

wr98u20j  于 2022-11-30  发布在  其他
关注(0)|答案(1)|浏览(138)

晚上好,
我做了一个包,它定义了一个类和一些资源。定义的类使用这些资源。

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中 * 显示包内容 *,包提供的资源不存在于内部)
如何将资源从包复制到应用程序?

soat7uwm

soat7uwm1#

来自文档:
当您构建Swift软件包时,Xcode会将每个目标视为Swift模块。如果目标包含资源,Xcode会在Bundle上创建一个资源包和一个内部静态扩展,以便为每个模块访问该资源包。使用该扩展来查找软件包资源。例如,使用以下命令来检索与软件包捆绑在一起的属性列表的URL:让设置URL =包.模块. url(对于资源:"设置",带有扩展名:"plist")

    • 重要说明**在访问资源时,请始终使用Bundle. module。软件包不应假定资源的确切位置。

如果你想让依赖Swift软件包的应用程序可以使用软件包资源,请为它声明一个公共常量。例如,使用下面的代码向使用Swift软件包的应用程序公开属性列表文件:let settingsURL = Bundle.module.url(forResource: "settings", withExtension: "plist")

相关问题