我已经在我的macOS命令行工具项目中添加了一些JSON文件,但我似乎无法通常的方式找到它们。
if let path = Bundle.main.path(forResource: "Data", ofType: "json")
{
if let contents = try? String(contentsOfFile: path)
{
print (contents)
}
else { print("Could not load contents of file") }
}
else { print("Could not find path") }
此代码在基于视图的应用程序中使用时非常正常,但始终打印"无法找到路径"在命令行工具中。
有谁知道我做错了什么?
P.S:完全清楚我应该使用guard
语句,但代码不在函数中,只是在main.swift中讨论,直到我弄清楚这一点。
答案 0 :(得分:8)
命令行工具没有应用包。只是二进制。
您需要将JSON文件放在已知位置(当前目录?)并自己构建路径
答案 1 :(得分:0)
您可以创建一个单独的捆绑包,将文件放在此处,然后加载它们,而不必担心它们的单独URL。
让我们这样做:
JSONMocks
)。将文件添加到此捆绑包。将文件添加到Xcode,然后确保在其目标成员资格部分中选中该软件包:
将捆绑包添加到目标中。在目标的构建阶段,打开复制文件阶段,然后单击+
按钮。选择捆绑包,然后点击添加:
以编程方式访问软件包的内容,因此:
let currentDirectoryURL = URL(fileURLWithPath: FileManager.default.currentDirectoryPath)
let bundleURL = URL(fileURLWithPath: "JSONMocks.bundle", relativeTo: currentDirectoryURL)
let bundle = Bundle(url: bundleURL)
let jsonFileURL = bundle!.url(forResource: jsonFileName, withExtension: "json")!