2011-09-19 5 views
1

사용자가 NSOpenPanel에서 폴더를 선택하게했습니다. file : // localhost/Folder와 같은 파일 경로를 반환합니다. 모든 잘못 어디로 여기 내 코드는 다음과 같습니다 여기폴더에서 파일 가져 오는 중 오류가 발생했습니다. 폴더를 인식하는 중 오류가 발생했습니다. (목표 c)

NSURL *filePath = [openDlg URL]; //OpenDlg is my NSOpenPanel 
NSString *s = [filePath absoluteString]; 
NSLog(@"%@",s); 
NSError *error; 
NSArray *b = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:s error:&error]; 
if (error) { 
    NSLog(@"%@",error); 
} 
NSLog(@"%lu",b.count); 

에 상관없이 내가 선택한 항목 폴더,이 오류 메시지가 전송되지 않습니다 : 폴더 "폴더가"존재하지 않는 "사용자 정보 = 0x10518b320 {NSFilePath = 파일. : // localhost/Folder, NSUserStringVariant = ( 폴더 ), NSUnderlyingError = 0x10515d5e0 "작업을 완료 할 수 없습니다. (OSStatus 오류 -43.) "}

무슨 일

?!? 이것은 내가 폴더 안에있는 모든 파일에 액세스 할 수있는 방법을 할?

답변

0

을하는 가장 좋은 방법은 아닌 경우이를 사용해보십시오 대신 방법.

- (NSArray *)contentsOfDirectoryAtURL:(NSURL *)url includingPropertiesForKeys:(NSArray *)keys options:(NSDirectoryEnumerationOptions)mask error:(NSError **)error 

당신은 단지는 NSString으로 변환 할 필요없이 NSURL에 전달할 수 있습니다 당신에게 당신이 그것을를 사용하는 방법의 예를 제공하기 위해, 아래 참조 :

[[NSFileManager defaultManager] contentsOfDirectoryAtURL:filePathURL 
           includingPropertiesForKeys:[NSArray arrayWithObjects:NSURLNameKey, nil] 
               options:NSDirectoryEnumerationSkipsHiddenFiles 
                error:&error]; 

내가 할 수있는 너를 어떻게 세우는 지 보지마. 사용자가 OK 버튼을 누른 후 위의 방법은 파일이나 폴더의 경로를 얻을 것이다

NSOpenPanel *openPanel = [NSOpenPanel openPanel]; 

[openPanel beginSheetModalForWindow:self.window completionHandler:^(NSInteger result){ 

     if (result == NSFileHandlingPanelOKButton) { 
      NSArray* urls = [openPanel URLs]; 

      NSURL *url = [urls objectAtIndex:0]; 
      if (url != nil) { 

       // If you want to convert the path to a NSString 
       self.filePathString = [url path]; 
       // If you want to keep the path as a NSURL 
       self.filePathURL = url; 

      } 

     } 

    }]; 

: R NSOpenPanel 그래서 나는 또한 아래에 그것을 설정하는 방법의 예를 포함 할 것이다. 시도해보고 작동하는지 확인하십시오. NSURL 사용을 제안한 이유에 대해 자세히 설명하기 위해 Apple 설명서에서 제공하는 설명은 다음과 같습니다.

파일이나 디렉터리의 위치를 ​​지정하는 가장 좋은 방법은 NSURL 클래스를 사용하는 것입니다. NSString 클래스는 경로 생성과 관련된 많은 메소드를 가지고 있지만 URL은 파일과 디렉토리를 찾는 더 강력한 방법을 제공합니다. 네트워크 리소스와도 작동하는 응용 프로그램의 경우 URL은 한 유형의 개체를 사용하여 로컬 파일 시스템이나 네트워크 서버에있는 항목을 관리 할 수 ​​있음을 의미합니다.

+0

고마워요! 그게 효과가 있었어. – Drenguin

관련 문제