как сделать массив URL-адресов из папки (swift, audio) - PullRequest
0 голосов
/ 08 октября 2019

Я ищу способ сделать массив URL-адресов из содержимого папки, содержащей звуковые файлы, чтобы я мог вызвать их позже с помощью AVAudioplayer.

Я использую шаговый и 3 переменные,первый называется nmbTracks, чтобы определить количество воспроизводимых звуковых файлов, и содержит максимальное значение степперов, второй называется currentActiveTrack и определяет, какой файл должен воспроизводить проигрыватель. 3-й называется audioURL и используется для подачи плееру, а также для получения имени файла, который передается на метку. Затем пользователь может просматривать звуковые файлы с помощью степпера.

Пока у меня все работает с некоторыми имеющимися у меня файлами, но я не могу понять, как создать массив URL-адресов или как получить URL-адреса из них. содержимое папки, следующий шаг - позволить пользователю импортировать свои собственные файлы в эту папку.

любая помощь будет принята с благодарностью, я уверен, что есть более простой способ сделать это, а также

1 Ответ

0 голосов
/ 09 октября 2019

У меня есть пара вариантов. Первый возвращает массив URL s, и если при извлечении из папки возникает ошибка, возвращается пустой массив.

func getFolderContentsURLs(_ folderPath: String) -> [URL] {
  let fm = FileManager()
  guard let contents = try? fm.contentsOfDirectory(atPath: folderPath) else { return [] }
  return contents.compactMap { URL.init(fileURLWithPath: $0) }
}

Результат можно отобразить следующим образом:

let songsURLs = getFolderContentsURLs("/")
songsURLs.forEach {
  print($0.absoluteString)
}

Вторая опция возвращает необязательный массив URL s, при ошибке возвращает nil

func getFolderContentsURLsOrNil(_ folderPath: String) -> [URL]? {
  let fm = FileManager()
  guard let contents = try? fm.contentsOfDirectory(atPath: folderPath) else { return nil }
  return contents.compactMap { URL.init(fileURLWithPath: $0) }
}

Чтобы просмотреть результаты, вы можете сделать это следующим образом:

if let songsURLs2 = getFolderContentsURLsOrNil("NotExistingPath") {
  songsURLs2.forEach {
    print($0.absoluteString)
  }
} else {
  print("Unable to fetch contents")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...