gpt4 book ai didi

ios - FileManager 在 Xcode 项目中找不到 PDF 目录

转载 作者:行者123 更新时间:2023-12-04 08:16:45 25 4
gpt4 key购买 nike

我正在尝试使用 SwiftUI 列出存储在我的 Xcode 项目中的文件夹中的所有 PDF,但是在尝试了许多不同的方法后,我在这里找到了我无法让它工作。
目前我正在使用文件管理器来列出项目,但是当我尝试打印或列出找到的项目时,它返回 nil .
我已经通过将它们拖到 Xcode 项目中来添加 PDF。我还确保它们在我的 中复制捆绑资源 所以我可以使用文件管理器。见下文:
enter image description here
这是我的 Xcode 结构,我试图列出 PDF 中的所有项目.正如您在下面看到的,PDF 存储在 中的主文件夹结构之外。 "/Swift/Products/Detail/Tab5/PDF" ,所以当尝试使用 Bundle.main.bundlePath 列出文件时,它看着 products.app .
enter image description here
这是我尝试使用 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
}

最佳答案

以这种方式将资源平面复制到根应用程序包中,而不是用户的 Documents因为它在提供的代码快照中尝试过(并且没有为您创建 PDF 子目录)。
所以解决方案只是迭代内部pdf文件,比如

func getFiles() -> Array<String> {
return Bundle.main.urls(forResourcesWithExtension: "pdf", subdirectory: nil)?
.compactMap { $0.lastPathComponent } ?? []
}
使用 Xcode 12.1/iOS 14.1 测试

关于ios - FileManager 在 Xcode 项目中找不到 PDF 目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65672098/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com