2014-02-06 2 views
0

매개 변수로 파일 경로 (NSString)를받는 메서드가있는 클래스를 만들려고합니다.주어진 파일 경로가 ios에서 유효합니까?

유효한 파일 경로가 유효한지 확인해야합니다. 디스크에서 쓰기 작업을 일부 수행합니다. 그렇지 않으면 오류가 반환됩니다.

주어진 경로가 유효한지 알아내는 가장 좋은 방법은 무엇입니까? 귀하의 예를 들어

+0

유효한 경로 란 무엇을 의미합니까? 하나는 불법 문자를 포함하지 않거나 하나는 쓸 수 있습니까? – Paul

+0

@paul 나는/var/etc와 같은 불법 문자를 의미하지 않습니다. 사용자가/var/mobile/Applications/8EFCBF99-BC19-4AFE-934A-B47CBEDF2971/Documents/fileName과 같은 경로를 올바르게 제공 할 것으로 예상됩니다. 이 함수는 인수로 NSString을 받기 때문에. 그래서 모래 상자를 올바르게 가리키고 있는지 확인해야합니다. 고마워 – jailani

답변

3

없습니다 : 여기

은 예입니다. 그냥 계속 만들어서 성공을 확인하십시오.

createFileAtPath : 내용 : 속성 : NSFileManager를 방법은 파일이 이미 존재하거나 생성에 성공 않은 경우 YES 반환하는 BOOL를 반환합니다.

이 방법을 사용하고 반환 된 결과를 확인하는 것이 좋습니다. NO를 리턴하면 오류를 리턴합니다.

1
// Returns the URL to the application's Documents directory. 
- (NSURL *)applicationDocumentsDirectory { 
    return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; 
} 

의/var/모바일/응용 프로그램/8EFCBF99-BC19-4AFE-934A-B47CBEDF2971/문서

도움이

합니까을 반환? 이 방법은 Core Data를 사용하는 모든 Xcode 프로젝트 유형의 AppDelegate에 포함되어 있다고 생각합니다. 경로가 유효한지 먼저 확인 할 필요가

NSString *validPath = [[[self applicationDocumentsDirectory] path] stringByAppendingPathComponent:@"test"]; 
NSString *invalidPath = @"/var/mobile/Applications/abc/test"; 

if (0 == [validPath rangeOfString:[[self applicationDocumentsDirectory] path]].location) { 
    // will be executed 
    NSLog(@"Valid path"); 
} 
else { 
    NSLog(@"Invalid path"); 
} 

if (0 == [invalidPath rangeOfString:[[self applicationDocumentsDirectory] path]].location) { 
    NSLog(@"Valid path"); 
} 
else { 
    // will be executed 
    NSLog(@"Invalid path"); 
} 
+1

전체 경로 (파일 이름 또는 ValidFilPathUptoDocument/Your ... 폴더/_! % @ # df_FileName ")를 확인하는 방법은 여기를 클릭하십시오. – Mani

+0

@paul 사용자가이 파일에서 생성 된 파일 경로를 제공하면 메서드를 사용하면 좋지만 사용자가 "fhdajkfal"과 같은 문자열을 제공하면 샌드 박스를 가리키는 경로를 찾는 것이 가능합니까? – jailani

+0

그는 샌드 박스에 대한 경로를 알려주는 메서드를 요청했습니다 (주석 참조). 그는 파일을 기대하는지 또는 파일 경로가 샌드 박스 내에 있는지 확실히하고 싶지 않다고 명시하지 않았다. – Paul

관련 문제