我们如何从资源文件夹中获取以前缀开头的所有文件名。
答案 0 :(得分:22)
您可以通过以下代码来实现:
NSArray *files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:
[[NSBundle mainBundle] bundlePath] error:nil];
NSArray *pngs = [files filteredArrayUsingPredicate:
[NSPredicate predicateWithFormat:@"self ENDSWITH[cd] '.png'"]];
NSLog(@"%@", pngs);
运行此代码,您将看到捆绑包上的PNG列表。更改谓词以匹配您想要的前缀:
NSArray *files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:
[[NSBundle mainBundle] bundlePath] error:nil];
NSArray *filesWithSelectedPrefix = [files filteredArrayUsingPredicate:
[NSPredicate predicateWithFormat:@"self BEGINSWITH[cd] 'prefix'"]];
NSLog(@"%@", filesWithSelectedPrefix);
答案 1 :(得分:1)
针对Swift 4.0进行了更新:
就我而言,我一直在寻找以fileName-1.png
开头的文件,其中可能有其他fileName
前缀的文件。
1)我考虑使用正则表达式,但拆分字符串更快更容易,所以我走了那条路线来获取前缀。
let myKnownFileNameString = "fileName-1.png"
let filePrefix = myKnownFileNameString.split(separator: "-").first
2)创建一个空数组来存储您找到的图像:
var imageArray: [UIImage] = []
3)然后,从包中获取网址,filter
他们以及map
到UIImage
个实例的网址:
if let filePrefix = filePrefix, let fileURLs = Bundle.main.urls(forResourcesWithExtension: "png", subdirectory: nil) {
imageArray = fileURLs.filter{ $0.lastPathComponent.range(of: "^\(filePrefix)", options: [.regularExpression, .caseInsensitive, .diacriticInsensitive]) != nil }
.map{ UIImage(contentsOfFile: $0.path)! }
}
从那里开始,您可以获得一系列图像(可以在UIImageView
等中制作动画)。