【问题标题】:Get all URLs for resources in sub-directory in Swift获取 Swift 子目录中资源的所有 URL
【发布时间】:2018-10-04 21:13:48
【问题描述】:

我正在尝试为我的 iOS 应用程序的子目录中的所有资源创建一个 URL 数组。我似乎无法找到正确的路径,即使我不知道名称,我也希望能够检索 URL(即我不想将文件名硬编码到代码中)。

下面是层次结构的屏幕截图,我正在尝试获取“test”文件夹中的所有文件:

非常感谢任何帮助,我尝试使用文件管理器和捆绑主路径,但到目前为止没有任何乐趣。

这是我目前唯一的代码:

let fileManager = FileManager.default
let path = Bundle.main.urls(forResourcesWithExtension: "pdf", subdirectory: "Files/test")

print(path)

我也试过这段代码,但这会打印所有资源,我似乎无法指定子目录:

let fm = FileManager.default
let path = Bundle.main.resourcePath!

do {
    let items = try fm.contentsOfDirectory(atPath: path)

    for item in items {
        print("Found \(item)")
    }
} catch {
    // failed to read directory – bad permissions, perhaps?
}

根据@vadian 的回答,文件夹已从虚拟组更改为真实文件夹。使用以下代码,我可以获得资源列表:

let fileManager = FileManager.default
    let path = Bundle.main.resourcePath

    let enumerator:FileManager.DirectoryEnumerator = fileManager.enumerator(atPath: "\(path!)/Files/test")!
    while let element = enumerator.nextObject() as? String {
        if element.hasSuffix("pdf") || element.hasSuffix("jpg") { // checks the extension
            print(element)
        }
    }

【问题讨论】:

  • 请出示你目前写的代码
  • @AshleyMills 更新了问题,没有任何代码,因为我已经尝试过,如果运气不好就删除了

标签: ios swift xcode nsfilemanager subdirectory


【解决方案1】:

考虑黄色文件夹 是虚拟,而不是真实文件夹(尽管 Xcode 在项目目录中创建真实文件夹)。构建应用时,黄色文件夹中的所有文件都会移动到捆绑包中的Resources 目录中。

包中的真实文件夹是项目导航器中的

【讨论】:

  • 谢谢你,我其实不知道。它帮助我建立了一个可能的答案。将编辑我的问题,让其他人知道。
【解决方案2】:

您可以按照以下步骤获取它们:

  1. 在您的项目文件夹中创建一个新文件夹,扩展名为 .bundle(例如:Images.bundle)。
  2. 将资源文件复制到该新文件夹中。
  3. 将该新文件夹拖到 Xcode 中打开的项目中。
  4. 使用以下代码 sn-p 检索 URL:

    let urls = Bundle.main.urls(forResourcesWithExtension: nil, subdirectory: "Images.bundle")
    

您也可以在这里观看指南视频:https://youtu.be/SpMaZp0ReEo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-02
    • 1970-01-01
    • 2020-02-23
    • 2011-08-25
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 2010-11-01
    相关资源
    最近更新 更多