Ios 对NSFileManager返回的数组进行排序';s子路径:方法
[[NSFileManager defaultManager]子路径路径:storagePath]返回一个字符串数组,表示“storagePath”中所有项的路径。在我的测试中,这个数组总是按照文件名的字母顺序排序,但是在文档中我找不到任何东西告诉我这种排序是有保证的。如果我知道数组已排序,我可以更高效地搜索它Ios 对NSFileManager返回的数组进行排序';s子路径:方法,ios,file,sorting,nsfilemanager,Ios,File,Sorting,Nsfilemanager,[[NSFileManager defaultManager]子路径路径:storagePath]返回一个字符串数组,表示“storagePath”中所有项的路径。在我的测试中,这个数组总是按照文件名的字母顺序排序,但是在文档中我找不到任何东西告诉我这种排序是有保证的。如果我知道数组已排序,我可以更高效地搜索它 有人知道这个数组是否保证被排序吗?试试这样的方法: NSMutableArray* fetchResults = [[NSFileManager defaultManager] subp
有人知道这个数组是否保证被排序吗?试试这样的方法:
NSMutableArray* fetchResults = [[NSFileManager defaultManager] subpathsAtPath:storagePath];
[fetchResults sortUsingComparator:^NSComparisonResult(NSString* a, NSString* b){
NSString* a1 = [a lastPathComponent];
NSString* b1 = [b lastPathComponent];
return [a1 localizedCaseInsensitiveCompare b1];
}
];
当一切都是按字母顺序开始时,这种排序将运行得相当快,这意味着您可以放心,您将始终按照您需要的字母顺序进行排序,而不会浪费太多的CPU周期来获取它。如果没有记录,则无法保证。这几乎正是我正在做的哈哈。我很想跳过这一步,因为这看起来像是白费力气。你的怀疑论是完全正确的,它需要一个按字母顺序排列的保证。因为你不能从文档中得到它,所以你可以通过像这样的比较器进行排序,得到你想要的东西。此外,如果结果已按字母顺序排列,则此块将仅通过数组一次(每个比较结果将只显示“好,继续”),这可能需要的时间可以忽略不计。在我看来,严格满足您对保证字母顺序的合理怀疑要求似乎是一个很小的代价。我也重新阅读了NSFileManager类参考,也找不到任何对结果排序的保证。您还可以考虑使用返回NSURL的方法(比如CoptTrimeDisturyAutoURL:包括PrimeTysFrace:Fiels:Error:),因为与简单的文件路径字符串相比,您有一些更方便的方法和挂钩。