You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Asset Catalog获取指定前缀的图片名称数组或数量?

在Asset Catalog中获取以img开头的图片列表/数量的实现方法

当然可以实现!要从Asset Catalog里筛选出所有以img开头的图片名称或者统计数量,核心思路是先获取Bundle里所有Asset Catalog相关的资源,再做前缀过滤。下面给你两种主流语言的实现方案:

Swift 实现

// 获取主Bundle中所有Asset Catalog里的图片资源路径(.imageset格式)
guard let allImagePaths = Bundle.main.paths(forResourcesOfType: "imageset", inDirectory: "Assets.car") else {
    print("无法读取Asset Catalog资源")
    return
}

// 提取纯文件名(去掉.imageset后缀)并过滤出以"img"开头的项
let imgPrefixImageNames = allImagePaths.compactMap { path in
    let fileName = (path as NSString).lastPathComponent.replacingOccurrences(of: ".imageset", with: "")
    return fileName.hasPrefix("img") ? fileName : nil
}

// 获取数量与名称数组
let imageCount = imgPrefixImageNames.count
print("以img开头的图片总数:\(imageCount)")
print("图片名称列表:\(imgPrefixImageNames)")

Objective-C 实现

// 获取主Bundle内所有Asset Catalog的图片资源路径
NSArray *allImagePaths = [[NSBundle mainBundle] pathsForResourcesOfType:@"imageset" inDirectory:@"Assets.car"];

NSMutableArray *imgPrefixImageNames = [NSMutableArray array];
for (NSString *path in allImagePaths) {
    // 提取文件名并移除.imageset后缀
    NSString *fileName = [[path lastPathComponent] stringByReplacingOccurrencesOfString:@".imageset" withString:@""];
    // 过滤以img开头的名称
    if ([fileName hasPrefix:@"img"]) {
        [imgPrefixImageNames addObject:fileName];
    }
}

// 输出结果
NSInteger imageCount = imgPrefixImageNames.count;
NSLog(@"以img开头的图片总数:%ld", (long)imageCount);
NSLog(@"图片名称列表:%@", imgPrefixImageNames);

补充说明

  • 如果你的Asset Catalog里有自定义的子目录结构,需要调整inDirectory参数的路径,或者使用递归查找的方式遍历所有子目录。
  • 不管是位图(如PNG)还是矢量图(如PDF,需开启Preserve Vector Data),在Asset Catalog中都会以.imageset的形式存储,所以上述方法通用。

内容的提问来源于stack exchange,提问作者Christian Seiler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:14:18