我正在创建一个录音应用程序,并声明了一个空数组来存储文件的所有名称。
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文档,但尚未找到解决方案。预先感谢您的帮助!
答案 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}