2012-08-28 4 views
2

나는 objective-c에 익숙하지 않으므로 지식 부족을 용서하십시오. 내가 제대로 작동하지 않을 수있는 코드 스 니펫이 있습니다. 내가하고 싶은 것은 버튼을 클릭 할 때 디렉토리 선택 패널을 제시하는 것입니다. 일단 사용자가 디렉토리를 선택하면 디렉토리의 모든 배열을 만들고 싶습니다. 결국이 배열을 사용하여 다른 위치로 복사 할 하위 디렉토리 및 파일 (사용자가 선택한 디렉토리의 모든 항목) 목록을 갖기를 원합니다.NSOpenpanel 및 NSfilemanager를 사용하여 디렉토리 내용을 검색하십시오.

인스턴스 메서드 '-contentsofdirectoryaturl : options : error'를 찾을 수 없다는 경고가 표시됩니다 (반환 유형의 기본값은 id 임). 그게 무슨 뜻인지, 어떻게 고쳐야하는지 정확히 모르겠다. 그리고 이것이 내 문제라고 생각한다. 제공되는 조언은 훌륭합니다. 감사!

- (IBAction)selectfiles:(id)sender { 

NSOpenPanel *openPanel = [NSOpenPanel openPanel]; 

[openPanel setCanChooseDirectories:YES]; 
[openPanel setCanChooseFiles:NO]; 
[openPanel setAllowsMultipleSelection:NO]; 

if ([openPanel runModal] == NSOKButton) { 

    NSArray *accountPath = [openPanel URLs]; 
    NSLog (@"%@", accountPath); 

    NSFileManager *filemgr; 
    filemgr = [NSFileManager defaultManager]; 

    NSArray *contents; 
    contents = [filemgr contentsOfDirectoryAtURL:accountPath options:(NSDirectoryEnumerationSkipsHiddenFiles) error:nil]; 

    } 

}

답변

2

contentsOfDirectoryAtURL:는 생략 한 추가 인수 includingPropertiesForKeys: 있습니다. 그래서 컴파일러가 경고합니다. 이 인수는 프리 페치하려는 특성 목록입니다. 가장 간단한 경우 빈 배열을 지정할 수 있습니다.

또 다른 오류는 [openPanel URLs]이 하나의 항목 만 선택하더라도 배열의 URL을 반환한다는 것입니다.

그래서 코드는 다음과 같아야합니다

NSURL *accountPath = [[openPanel URLs] objectAtIndex:0]; 
NSLog (@"%@", accountPath); 

NSFileManager *filemgr; 
filemgr = [NSFileManager defaultManager]; 

NSArray *contents; 
contents = [filemgr contentsOfDirectoryAtURL:accountPath 
    includingPropertiesForKeys:[NSArray array] 
    options:(NSDirectoryEnumerationSkipsHiddenFiles) 
    error:nil]; 
+0

감사합니다! 그 일을하는 것 같습니다! – dzimmerl

관련 문제