如何在Swift Assets.xcassets中查找以字符串开头的特定图像

时间:2019-01-13 13:40:14

标签: swift xcode image bundle assets

我正在开发一个快速的应用程序,需要找到一些以特定字符串开头的图像,但是我不知道如何从Assets.xcassets中找到这些图像。

我所有的图像都在Assets.xcassets中

谢谢

3 个答案:

答案 0 :(得分:1)

无法以这种方式访问​​资产文件夹。一种方法是使用计算机上的所有图像创建一个文件夹,然后将其拖到Xcode项目中。不要忘记选择“为任何添加的文件夹创建文件夹引用”选项。使用该引用的文件夹,您可以访问所有图像:

guard let _resourcePath = Bundle.main.resourcePath else{
        return
    }
    do{
        if let url = NSURL(string: _resourcePath)?.appendingPathComponent("YOUR FOLDER NAME"){
            let resourcesContent = try FileManager().contentsOfDirectory(at: url, includingPropertiesForKeys: nil, options: .skipsHiddenFiles)

            for imageUrl in resourcesContent {
                let imageName = imageUrl.lastPathComponent
                print(imageName)
                //CHECK IMAGE NAME STRING
            }
        }
    }catch let error{
        print(error.localizedDescription)
    }

答案 1 :(得分:0)

首先,您应该使用开头的标识符命名所需的图像。我将以“星”一词为例。

图像应具有star1,star2,star3,star4等名称。该代码应该有效。

var imagesCollected = [UIImage]()

for n in 1 ... 10{ //10 is whatever number you want
    let imageloaded = UIImage(named: "star\(n)")
    imagesCollected.append(imageloaded)
}

imagesCollected应该包含所有图像。让我知道是否行得通。

Niall

答案 2 :(得分:0)

您自己知道图像的名称吗?我的意思是是您自己将图像手动加载到Assets.xcassets还是以编程方式添加它们? 如果这样做,则可以创建字典并在每次将图像添加到Assetts.xcassets时以编程方式手动添加或以编程方式添加图像名称。

imageDict = [category:[animalType]]用于2D字典。 如下访问

import UIKit

var NaturePicsDict: [String : [String]] = ["cats":["Lion", "Tiger", "Panther"],
                                          "Birds": ["Hawk", "Parrot", "Sparrow", "Blackbird"]
                                          ]

//create an array of animal names for each category and then construct the full image file name from the category:animal using string concatination.

var animalsForCategory:[String] = []

for category in NaturePicsDict.keys {
    print("key = \(category) animal =" ,NaturePicsDict[category]!)
    let animals = NaturePicsDict[category]!
    for animalName in animals {
        let imageName: String = "\(category)_\(animalName)"
        print("imageName = \(imageName)")
    }
}

对不起,所有修改。我正在学习如何使用本网站。无论如何,我的代码段的输出是:

key = cats animal = ["Lion", "Tiger", "Panther"]
imageName = cats_Lion
imageName = cats_Tiger
imageName = cats_Panther
key = Birds animal = ["Hawk", "Parrot", "Sparrow", "Blackbird"]
imageName = Birds_Hawk
imageName = Birds_Parrot
imageName = Birds_Sparrow
imageName = Birds_Blackbird

希望这会有所帮助。我刚刚在正在编写的应用程序中使用3D词典,发现它是一种非常紧凑的存储和访问钻取信息的方式。