Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 对NSFileManager返回的数组进行排序';s子路径:方法_Ios_File_Sorting_Nsfilemanager - Fatal编程技术网

Ios 对NSFileManager返回的数组进行排序';s子路径:方法

Ios 对NSFileManager返回的数组进行排序';s子路径:方法,ios,file,sorting,nsfilemanager,Ios,File,Sorting,Nsfilemanager,[[NSFileManager defaultManager]子路径路径:storagePath]返回一个字符串数组,表示“storagePath”中所有项的路径。在我的测试中,这个数组总是按照文件名的字母顺序排序,但是在文档中我找不到任何东西告诉我这种排序是有保证的。如果我知道数组已排序,我可以更高效地搜索它 有人知道这个数组是否保证被排序吗?试试这样的方法: NSMutableArray* fetchResults = [[NSFileManager defaultManager] subp

[[NSFileManager defaultManager]子路径路径:storagePath]返回一个字符串数组,表示“storagePath”中所有项的路径。在我的测试中,这个数组总是按照文件名的字母顺序排序,但是在文档中我找不到任何东西告诉我这种排序是有保证的。如果我知道数组已排序,我可以更高效地搜索它


有人知道这个数组是否保证被排序吗?

试试这样的方法:

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:),因为与简单的文件路径字符串相比,您有一些更方便的方法和挂钩。