在 SwiftUI 中使用 FileManager 列出文档
Posted
技术标签:
【中文标题】在 SwiftUI 中使用 FileManager 列出文档【英文标题】:List documents using FileManager in SwiftUI 【发布时间】:2020-12-17 13:02:21 【问题描述】:我正在尝试列出我添加到我的 Xcode 项目中的所有 pdf 文档。我有一个单独的函数,它获取所有扩展名为 pdf
的文档,然后在函数内附加一个 files
变量。然后我尝试使用@State
访问files
,然后列出数组中的所有项目,但我不确定如何访问函数中的files
变量,然后将其添加到列表中?我哪里错了?
struct PDFList: View
@State var files = GetFiles()
var body: some View
VStack
ForEach(0..<files.count, id: \.self) item in
Text(files[item])
func GetFiles() -> Array<URL>
var files: [String] = []
let documentsUrl = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
do
let directoryContents = try FileManager.default.contentsOfDirectory(at: documentsUrl, includingPropertiesForKeys: nil)
let pdfFiles = directoryContents.filter $0.pathExtension == "pdf"
let pdfFileNames = pdfFiles.map $0.deletingPathExtension().lastPathComponent
files.append(contentsOf: pdfFileNames)
catch
print(error)
【问题讨论】:
函数名以小写开头 【参考方案1】:添加退货
func getFiles() -> Array<String>
var files: [String] = []
let documentsUrl = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
do
let directoryContents = try FileManager.default.contentsOfDirectory(at: documentsUrl, includingPropertiesForKeys: nil)
let pdfFiles = directoryContents.filter $0.pathExtension == "pdf"
let pdfFileNames = pdfFiles.map $0.deletingPathExtension().lastPathComponent
files.append(contentsOf: pdfFileNames)
catch
print(error)
return files
【讨论】:
谢谢,我在使用return files
时收到此错误Cannot convert return expression of type '[String]' to return type 'Array<URL>'
。另外我如何访问@State var files
中的变量?以上是关于在 SwiftUI 中使用 FileManager 列出文档的主要内容,如果未能解决你的问题,请参考以下文章
如何在 swift 中使用 fileManager.unmountVolume