如何在Swift中借助FileManager获取目标相对路径?
实现Swift原生获取目标文件相对路径
可以通过Foundation的URLAPI结合FileManager实现,无需依赖第三方库,步骤如下:
核心思路
利用URL的relativePath(to:)方法,传入目标文件的绝对路径URL和当前工作目录URL,直接计算出相对路径。
具体代码示例
// 目标文件的绝对路径 let targetAbsolutePath = "/Users/user/projects/ios-projects/project-name/resources/myfolder/myfile" // 通过FileManager获取当前工作目录路径 let currentDirPath = FileManager.default.currentDirectoryPath // 将路径转为URL对象(需确保路径格式合法) guard let targetURL = URL(fileURLWithPath: targetAbsolutePath), let currentDirURL = URL(fileURLWithPath: currentDirPath) else { fatalError("路径格式无效") } // 计算相对路径 let relativePath = targetURL.relativePath(to: currentDirURL) print(relativePath) // 输出结果:../../../resources/myfolder/myfile
注意事项
URL(fileURLWithPath:)是处理本地文件路径的正确方式,比URL(string:)更可靠- 服务器运行时,
FileManager.default.currentDirectoryPath会指向程序的实际运行目录,而非Xcode的DerivedData路径,迁移服务器后只要程序目录结构相对目标文件的层级不变,就能得到正确的相对路径 - 需添加路径合法性校验,避免因路径错误导致程序崩溃
内容的提问来源于stack exchange,提问作者Nathace
相关产品推荐
相关产品推荐

