2013-10-31 1 views
0

[[NSFileManager defaultManager] subpathsAtPath : storagePath]는 'storagePath'의 모든 항목에 대한 경로를 나타내는 문자열 배열을 반환합니다. 내 테스트에서이 배열은 항상 파일 이름순으로 알파벳 순으로 정렬되어 있지만 문서에서는 필자가이 정렬이 보장된다는 것을 알 수없는 것을 찾을 수 없다. 배열을 정렬했다는 것을 알고 있으면 더 효율적으로 검색 할 수 있습니다.NSFileManager의 subpathsAtPath에 의해 반환 된 배열 정렬 :

이 배열의 정렬 보장 여부는 누구나 알고 계십니까?

+1

문서화되지 않은 경우 보증 할 수 없습니다. –

답변

0

이 같은 것을보십시오 : 모든 시작하는 알파벳에있을 때

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 사이클을 낭비하지 않아도됩니다.

+0

거의 정확히 내가 하하하고있는 것입니다. 낭비되는 작업처럼 보이기 때문에 나는 이것을 건너 뛰고 싶다. –

+0

알파벳순 정렬 보증을 원하는 회의론에 대해서는 모든 것이 있습니다. 당신이 문서에서 그것을 얻지 못하고 있기 때문에, 당신은 이것과 같은 비교 자로 정렬함으로써 원하는 결과를 얻는다. 게다가, 결과가 사전 순으로 정렬되어 있다면,이 블록은 배열을 통해 정확히 하나의 패스를 만들게 될 것입니다. (모든 비교 결과는 단지 "좋다, 계속 진행"이라고 말할 것입니다.) 아마 무시할 수있는 시간이 걸릴 것입니다. 내게는 알파벳 순서가 보장된다는 당신의 정당화 된 회의적인 요구를 엄격하게 충족시키기 위해 지불해야 할 작은 댓가로 보인다. –

+0

NSFileManager 클래스 참조를 다시 읽었으므로 결과가 정렬된다는 보장을 찾을 수 없습니다. 간단한 파일 경로 문자열과 비교할 때 몇 가지 편의 메서드와 후크가 있으므로 NSURL을 반환하는 메서드 (예 : contentsOfDirectoryAtURL : includingPropertiesForKeys : options : error :)를 사용할 수도 있습니다. –