【问题标题】:List documents using FileManager in SwiftUI在 SwiftUI 中使用 FileManager 列出文档
【发布时间】: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)
    }
}

【问题讨论】:

  • 函数名以小写开头

标签: ios xcode swiftui


【解决方案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&lt;URL&gt;'。另外我如何访问@State var files中的变量?
猜你喜欢
  • 1970-01-01
  • 2017-08-03
  • 2021-10-14
  • 1970-01-01
  • 1970-01-01
  • 2021-02-25
  • 1970-01-01
  • 2018-10-09
  • 2021-09-13
相关资源
最近更新 更多