如何从iOS文件管理器中获取文件名数组

时间:2018-12-31 19:01:47

标签: arrays swift nsfilemanager

我正在创建一个录音应用程序,并声明了一个空数组来存储文件的所有名称。

var recordingTitles: [String] = []

启动应用程序时,我有一个功能可以检查文件管理器中已经存储了哪些文件,并返回文件数,以便在collectionView中显示正确的单元格数。

override func viewDidLoad() {
    super.viewDidLoad()
    getNumberOfRecordings()

}

// Get number of actual recording files stored in the File Manager Directory
func getNumberOfRecordings() {
    let directoryUrl = getDirectory()

    do {
        contentsOfFileManager = try myFileManager.contentsOfDirectory(at: directoryUrl, includingPropertiesForKeys: [URLResourceKey(rawValue: recordingsKey)], options: .skipsHiddenFiles)

    } catch let error {
        print(error.localizedDescription)
    }
    numberOfRecordings = contentsOfFileManager.count
}

我想获取文件的名称并将它们分配给“ recordingTitles”数组,以便为​​每个单元格显示正确的标题。我尝试阅读File Manager的Apple文档,但尚未找到解决方案。预先感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

因此,contentsOfFileManager将包含NSURL个对象。这些对象具有不同的字段,您可以选择和使用。看来您只对文件名感兴趣,所以我想引起您对NSURL的lastPathComponent字段的关注。从文档中:

  

此属性包含最后一个路径组件,该组件未使用replacePercentEscapes(using :)方法进行转义。例如,在URL file:/// path / to / file中,最后一个路径部分是file。

换句话说,调用myNsurl.lastPathComponent应该会给您提供文件名。因此,您可以遍历myFileManager.contentsOfDirectory返回的数组,并获取每个数组的lastPathComponent并将它们添加到仅包含文件名的另一个数组中。

答案 1 :(得分:0)

使用map函数。您可能想要这样的东西:

recordingTitles = try myFileManager.contentsOfDirectory(at:directoryURL, 
    includingPropertiesForKeys: nil).map {$0.lastPathComponent}