【发布时间】:2021-01-11 17:54:06
【问题描述】:
我正在尝试使用 SwiftUI 列出存储在我的 Xcode 项目中的文件夹中的所有 PDF,但是在尝试了我在这里找到的许多不同方法后,我无法使其正常工作。
目前我正在使用文件管理器列出项目,但是当我尝试打印或列出找到的项目时,它返回 nil。
我已通过将 PDF 拖入 Xcode 项目来添加它们。我还确保它们位于我的 复制捆绑资源 中,因此我可以使用 FileManager。见下文:
这是我的 Xcode 结构,我正在尝试列出 PDF 中的所有项目。正如您在下面看到的,PDF 存储在 "/Swift/Products/Detail/Tab5/PDF" 中的主文件夹结构之外,因此当尝试使用 Bundle.main.bundlePath 列出文件时,它会查看products.app.
这是我尝试使用 FileManager 查找文件夹内所有 PDF 的代码:
struct ProductTab5View: View {
@State var files = getFiles()
var body: some View {
VStack{
ForEach(0..<files.count, id: \.self) { item in
Text(files[item])
}
}
}
}
func getFiles() -> Array<String>{
// Get document directory url
let documentsUrl = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
var files: [String] = []
do {
// Get the directory contents urls (including subfolders urls)
let directoryContents = try FileManager.default.contentsOfDirectory(at: documentsUrl, includingPropertiesForKeys: nil)
print(directoryContents)
// filter directory contents:
let pdfFiles = directoryContents.filter{ $0.pathExtension == "pdf" }
let pdfFileNames = pdfFiles.map{ $0.deletingPathExtension().lastPathComponent }
files.append(contentsOf: pdfFileNames)
} catch {
print(error)
}
return files
}
【问题讨论】:
-
请在最终构建的应用程序包中添加该 pdf 文件所在位置的屏幕截图。
-
@Asperi 我已经更新了显示捆绑资源的帖子。这是你的意思吗?