首页 > 解决方案 > 如何强制使用 NSPredicate 从硬盘检索图像的特定顺序

问题描述

给定以下代码并且硬盘中的文件是图像,如何强制从硬盘中检索文件的特定顺序。如何修改下面的代码,以便即使硬盘中的顺序由于排序问题而发生变化,图像的检索也必须遵循特定的顺序,例如,现在 HD 中的文件按名称排序..few seconds早些时候,排序更改为通过日期或其他方式。

换句话说,如何以编程方式强制文件的检索始终按字母顺序或任何其他条件

代码

NSString *bundleRoot = [[NSBundle mainBundle] bundlePath];
NSFileManager *fm = [NSFileManager defaultManager];
NSArray *dirContents = [fm contentsOfDirectoryAtPath:bundleRoot error:nil];
NSString *pred = [NSString stringWithFormat:@"SOME TEXT 'iconxxx%@x.png' ", acx];
NSPredicate *fltr = [NSPredicate predicateWithFormat:pred];
NSArray *onlys = [dirContents filteredArrayUsingPredicate:fltr];

标签: objective-cnspredicatensfilemanager

解决方案


NSFilemanager不负责对文件列表进行排序。使用谓词过滤后,您只需对数组进行排序。通常localizedStandardCompare用于像 Finder 或任何其他文件管理器一样进行排序。

// sort the filtered array
NSArray *sorted = [onlys sortedArrayUsingSelector:@selector(localizedStandardCompare:)];

推荐阅读