ios - 如何从 Swift 包管理器清单文件加载文件并运行 swift 代码?
问题描述
我有一个具有 SPM 依赖项的 iOS 项目,我正在尝试根据配置文件更新 SPM 清单文件(Package.swift)中的 Package 对象,以获得类似于以下内容的内容:
// Package.swift
// swift-tools-version:5.3
import PackageDescription
import Foundation
var modules : [Modules] = getConfigurationFrom("file.json")
// Where getConfigurationFrom function calls to:
// Bundle.main.path(forResource: "file", ofType: "json")
if modules.first.isEnabled {
// Build Package object with moduleA dependencies
Package(name: "Package", ... Dependencies for ModuleA ...)
} else {
// Build Package object with moduleB dependencies
Package(name: "Package", ... Dependencies for ModuleB ...)
}
但是我无法从主包中正确加载 json 文件,也许我在这里遗漏了什么?或者是否有另一种方法可以在不使用方库的情况下使用 SPM 基于文件构建不同的依赖项?
谢谢!
解决方案
这有点 hacky,但你可以使用 获取当前文件的路径#file
,所以如果你对与 Package.swift 位于同一目录中的 file.json 感兴趣,你可以这样做:
let packageURL = URL(fileURLWithPath: #file).deletingLastPathComponent()
let fileURL = packageURL.appendingPathComponent("file.json")
推荐阅读
- javascript - 单击外部时关闭响应式汉堡菜单
- java - java导出到带有用户输入的jar
- python - 在 Tensorflow 2.x 中使用 Beam Search 实现 seq2seq 模型
- javascript - 您可以为 MessageEmbed#setDescription 使用数组吗?
- python - 将字典值转换为熊猫数据框
- python - 使用 JsonResponse 在选择选项 Django 中显示列表?
- html - 无法获取 /index.html。在学习有关 Node.js 和 MongoDB 的教程时
- rust - 如何自动公开模块目录中的所有 .rs 文件?
- html - 带引导程序的搜索框结果
- javascript - 尝试对 javascript + 本地存储不工作的测验进行评分