如何从文件夹(swift,audio)制作一组 url

用户12184258

我正在寻找一种方法,可以从包含声音文件的文件夹的内容中创建一组 url,以便我稍后可以使用 AVAudioplayer 调用它们。

我使用步进器和 3 个变量,第一个称为 nmbTracks 来定义可播放声音文件的数量,并保存步进器最大值,第二个称为 currentActiveTrack 并定义播放器应播放的文件。第三个称为audioURL,用于为播放器提供信息以及检索输出到标签的文件的名称。然后用户可以使用步进器逐步浏览声音文件。

到目前为止,我已经使用我拥有的一些文件完成了所有工作,但我无法弄清楚如何制作一组 url 或如何从文件夹的内容中获取 url,下一步是让用户将他们自己的文件导入那个文件夹。

任何帮助将不胜感激,我相信也有更简单的方法来做到这一点

亚伦·赛尔曼

我有几个选择。第一个返回一个URLs数组,如果获取文件夹时出错,则返回一个空数组。

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)
}

第二个选项返回一个可选的URLs数组,错误返回 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")
}

响应@user12184258 关于仅返回音频文件的评论,您可以在获取文件夹内容后应用过滤器。过滤器可以检查每个文件使用UTTypeConformsTo来自MobileCoreServices

let contentsFolder = getFolderContentsURLs("/path/to/folder")
let audioFiles = contentsFolder
  .filter { path in
    // Try to create uniform type identifier using file's extension
    guard let uti =
      UTTypeCreatePreferredIdentifierForTag(
        kUTTagClassFilenameExtension,
        path.pathExtension as CFString, nil) else { return false }
    // Checks conformance of UTI with kUTTypeAudio (abstract type for audio) 
    return UTTypeConformsTo((uti.takeRetainedValue()), kUTTypeAudio)
  }

我在这里找到了这个方法此外,Apple 有一个非常有用的System-Declared Uniform Type Identifiers您可以检查,如果您只想要 mp3 文件,您可以使用kUTTypeMP3.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从url下载某些文件夹

为一组图像文件生成Presign URL

如何从一组 LARAVEL 子类别构建 URL?

如何通过终端打开目录/文件夹和URL

如何为文件夹结构进行 URL 重写

如何使用 htaccess 从 URL 中删除子文件夹

Nginx Server:如何从URL中删除文件夹路径?

.htaccess:如何在URL中删除子文件夹的子文件夹?

如何编辑一组文件并保存在名称相关的文件夹中

如何使用-G选项搜索一组特定的文件夹?

如何将Shotshot中的一组照片导出到文件夹中?

使URL指向本地文件夹

重写子文件夹的URL条件

重写旧的子文件夹URL

从URL删除文件夹名称

清理子文件夹中的URL

Url 重写多个文件夹

htaccess:通配符文件夹和url

WordPress的子文件夹的URL htaccess的

如何使用wget从同一站点上的不同URL下载文件列表,并将文件存储在与URL相同的文件夹结构中?

.htaccess URL重写(从URL删除文件夹)

如何检测URL位置是否在此页面以及同一域的任何其他子文件夹中

如何使用fs / require来访问一组文件,而不管文件夹名称如何

在 CodeIgniter 中,如何使用 site_url 访问应用程序文件夹之外的文件夹

如何从一组 URL 中获取内容反应原生

如何使用环回映射我的一组URL和中间件

如何将一组图像 URL 上传到 Firestore?

给定一组格式为{FIXED PREFIX} / {NUMERIC ID} / ...的URL,如何检索具有最高{NUMERIC ID}的URL?

返回给定URL中音频文件的最后一个文件夹名称