2010-02-03 2 views
0

사용자가 버튼을 한 번 실행하면 메소드가 생성됩니다. 이 메서드는 사용자가 정의한 이름의 폴더를 만들고 해당 폴더에 plist를 추가합니다. 문제는 plist를 생성하지 않는다는 것입니다. 나는 코드가 별도로 작동한다는 것을 알고 있지만 디렉토리가 생성되기 전에 plist 생성이 완료되고 있다고 생각합니다. 'wait until'절을 추가 할 수있는 방법이 있습니까? 이 방법은 디렉토리와 수익을 만들 때까지 코드가 진행되지 않도록 감사iPhone이 코드가 실행될 때까지 대기합니다.

- (void) addTheDirectory{ 
NSString *theTitle = theTitleField.text; 
NSString *theDescription = theDescriptionField.text; 

//create the directory 
[[NSFileManager defaultManager] createDirectoryAtPath:[NSString stringWithFormat:@"%@/%@", DOCUMENTS_FOLDER, theTitle] attributes:nil]; 

//create the plist 
NSMutableDictionary* plistDictionary = [[NSMutableDictionary alloc] init]; 
[plistDictionary setValue:theTitle forKey:@"Title"]; 
[plistDictionary setValue:theDescription forKey:@"Description"]; 
[plistDictionary setValue:@"0.1" forKey:@"LBVersion"]; 
[plistDictionary writeToFile:[NSString stringWithFormat:@"%@/%@/info.plist", DOCUMENTS_FOLDER, theTitle] atomically: YES]; 
} 

답변

2

createDirectoryAtPath:attributes:는 BOOL을 반환합니다.

나는이 건설 ...

[NSString stringWithFormat:@"%@/%@/info.plist", DOCUMENTS_FOLDER, theTitle] 

이 ... 대부분 문제라고 생각합니다. 그것은 일반적으로 작동하지만 더 강력한 방법은 다음과 같은 전용 경로 방법 중 하나를 사용하는 것입니다 : 이것은 당신이 올바른 경로를 얻을 것이다 더 가능성이 있습니다

[NSString pathWithComponents:[NSArray arrayWithObjects:DOCUMENTS_FOLDER, theTitle,@"/info.plist",nil]] 

, 당신은 단지 그것을 변경 특히.

두 파일 작업에서 부울 반환 값을 캡처하여 어느 것이 실패하는지 확인할 수도 있습니다.

+1

동의 :'-createDirectoryAtPath'의 결과를 확인해야합니다. 성공하는 것은 보장되지 않으며, 아마도 귀하의 경우에는 그렇지 않습니다. –

+0

생성 된 디렉토리를 볼 수 있기 때문에 성공합니다. 나는 스레딩을 들여다 볼 필요가 있다고 생각합니다. 그래도 조언 주셔서 감사합니다. – Jack

+1

스레딩은 과잉이라고 생각합니다. 디렉토리를 생성하고 바로 쓰기를하는 것은 일반적인 습관입니다.이 방법으로 전체 채워진 계층을 구성했습니다. 대부분의 코드는 디렉토리를 생성하지 않으며 잠시 기다린 다음 디렉토리에 무언가를 씁니다. 뭔가 다른 것이 잘못되어 경로 구성에서 가장 가능성이 높습니다. 경로를 만드는 데 사용 된 변수 중 하나에 인코딩 문제가있을 수 있습니다. 전용 경로 메서드 중 하나를 사용하여 경로를 생성하고 그 경로가 도움이되는지 확인하십시오. 디렉토리에 대한 경로가 작동한다고해서 파일 경로가 의미하는 것은 아닙니다. – TechZen

관련 문제