如何在Array(或某些数据结构?)中获取Assets.xcassets文件名?

Pat*_*k C 7 ios swift

我正在尝试使用Swift迭代我放入Assets文件夹的图像.我想迭代它们并.nib稍后将它们插入到文件中,但到目前为止我找不到如何得到类似的东西:

let assetArray = ["image1.gif", "image2.gif", ...]

这可能吗?我一直在玩,NSBundle.mainBundle()但在这方面找不到任何东西.请告诉我.谢谢!

Chr*_*lla 13

Assets.xcassets不是文件夹,而是包含使用Assets.car作为其文件名的所有图像的存档.

如果你真的想读的资产文件,那么你需要使用一些库,可以提取像这样的文件的内容一个.

或者您可以在项目中创建一个包并拖动您在那里的所有图像.就我而言,我的项目中有Images.bundle.要获取文件名,您可以执行以下操作:

let fileManager = NSFileManager.defaultManager()
let bundleURL = NSBundle.mainBundle().bundleURL
let assetURL = bundleURL.URLByAppendingPathComponent("Images.bundle")
let contents = try! fileManager.contentsOfDirectoryAtURL(assetURL, includingPropertiesForKeys: [NSURLNameKey, NSURLIsDirectoryKey], options: .SkipsHiddenFiles)

for item in contents
{
  print(item.lastPathComponent)
}
Run Code Online (Sandbox Code Playgroud)

SWIFT 3版本:

let fileManager = FileManager.default
let bundleURL = Bundle.main.bundleURL
let assetURL = bundleURL.appendingPathComponent("Images.bundle")

do {
  let contents = try fileManager.contentsOfDirectory(at: assetURL, includingPropertiesForKeys: [URLResourceKey.nameKey, URLResourceKey.isDirectoryKey], options: .skipsHiddenFiles)

  for item in contents
  {
      print(item.lastPathComponent)
  }
}
catch let error as NSError {
  print(error)
}
Run Code Online (Sandbox Code Playgroud)

  • 这正是我一直在寻找的。非常感谢! (2认同)
  • 很酷。但是它在`try!` 中崩溃了,当我执行`do catch` 时,它会导致捕获这个错误:`The file “Images.bundle” can't be open because there no such file.` (2认同)