是否可以对具有特定前缀的资产目录中的图片进行计数?

Posted

技术标签:

【中文标题】是否可以对具有特定前缀的资产目录中的图片进行计数?【英文标题】:Is it possible to count pictures in asset catalog with particular prefix? 【发布时间】:2016-04-02 19:49:37 【问题描述】:

是否可以在资产目录中计算具有特定前缀的图片? 例如,我有如下图像:

鸡尾酒_01

鸡尾酒_02

...

鸡尾酒_nn

和其他类似的群体。

当我的应用启动时,我执行如下代码:

var rec_cocktail = [UIImage]()
    for i in 1..<32 
        if i < 10 
            let name: String = "Cocktail__0" + i.description
            rec_cocktail.append(UIImage(named: name)!)
         else 
            let name: String = "Cocktail__" + i.description
            rec_cocktail.append(UIImage(named: name)!)
        
    
    alcoholImages.append(rec_cocktail)

效果很好,但是我要加载的组很少,而且每个组都有不同数量的图像。每次在资产目录中添加或删除图片时,我都必须检查和更改范围。

【问题讨论】:

【参考方案1】:

使用文件夹而不是 Images.xcassets 可能更容易。在您的计算机上创建您喜欢的层次结构并将其拖到您的 Xcode 项目中。确保您选择:

为任何添加的文件夹创建文件夹引用

然后,因为您现在在构建应用程序时具有文件夹引用,您可以使用循环遍历这些文件夹中的项目。

例如,我拖入一个名为“Cocktail”的文件夹并创建了引用。现在我可以使用以下方法遍历此文件夹中的项目:

let resourcePath = NSURL(string: NSBundle.mainBundle().resourcePath!)?.URLByAppendingPathComponent("Cocktail")
let resourcesContent = try! NSFileManager().contentsOfDirectoryAtURL(resourcePath!, includingPropertiesForKeys: nil, options: NSDirectoryEnumerationOptions.SkipsHiddenFiles)

for url in resourcesContent 
    print(url)
    print(url.lastPathComponent)
    print(url.pathExtension!) // Optional


url.lastPathComponent 是图像的文件名(例如 Cocktail_01.jpeg),而 url 本身就是图像的完整路径。

如果您维护文件夹的结构,那么迭代它们非常容易,如果您希望所有图像都在同一个文件夹中,那么您可以创建一个仅包含您需要的图像名称的数组并使用以下方法对其进行迭代:

// The Array of Image names
var cocktailImagesArray : [String] = []

// Add images to the array in the 'for url in resourceContent' loop
if (url.lastPathComponent?.containsString("Cocktail")) 
    self.cocktailImagesArray.append(url.lastPathComponent)

这样你就拥有了所有包含鸡尾酒的图像并将它们添加到你的数组中。现在您可以使用以下方法简单地迭代新创建的数组:

for imageName in self.cocktailImagesArray 
    // Do something

【讨论】:

以上是关于是否可以对具有特定前缀的资产目录中的图片进行计数?的主要内容,如果未能解决你的问题,请参考以下文章

授予对具有特定前缀的多个表的权限

仅在具有特定前缀的文件中搜索 IntelliJ 中的文本

资产目录中设备特定图像集中的设备

在 scss 辅助方法中生成的资产路径具有重复的资产前缀

如何将 JPEG 添加到 Xcode 中的资产目录?

如何使用通过 XCode5 资产目录的切片工具切片的图像