В Swift вы должны использовать URL
s, а не пути для ссылки на файлы. Итак, вместо subpathsOfDirectory
используйте FileManager
'enumerator(at:includingPropertiesForKeys:options:errorHandler:)
. Перечислитель, возвращаемый этим методом, даст вам URL
для каждого подпути в каталоге. К сожалению, DirectoryEnumerator
немного Objective-C-ish в своем интерфейсе, это означает, что его элемент Any
вместо URL
, как вы ожидаете, но вы, тем не менее, можете получить доступ к URL
следующим образом:
for each in enumerator {
guard let eachURL = each as? URL, eachURL.pathExtension == "mp3" else { continue }
let trackName = eachURL.lastPathComponent
let albumName = eachURL.deletingLastPathComponent().deletingLastPathComponent().lastPathComponent
print("\(albumName) \(trackName)")
}
Затем вы можете просто использовать свойство URL
lastPathComponent
, чтобы получить только имя файла без остатка пути. Сделайте то же самое для каталога, представляющего альбом, и вы можете сшить вместе название альбома и название трека, чтобы получить то, что вы хотите.