如何从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
相关产品推荐
相关产品推荐

