2010-07-13 5 views

답변

1

응용 프로그램 번들에 이미 문서의 서식 파일 버전이있는 경우 다음과 비슷한 방법을 사용하여 응용 프로그램의 문서 디렉터리에 문서 버전을 쓸 수 있어야합니다. 이 코드를 테스트하지 않았으므로 몇 가지 문제가있을 수 있지만 일반적인 생각입니다.

- (void) applicationDidFinishLaunching { 
    NSArray* directories = NSSearchPathsForDirectoriesInDomain(NSDocumentsDirectory, NSUserDomainMask, YES); 
    NSString* documentsDirectory = [directories objectAtIndex: 0]; 
    NSString* path = [documentsDirectory stringByAppendingPathComponent: @"Something.plist"]; 

    if (![[NSFileManager sharedInstance] fileExistsAtPath: path]) { 
    NSString* infoTemplatePath = [[NSBundle mainBundle] pathForResource: @"Something" ofType: @"plist"]; 
    NSDictionary* info = [NSDictionary dictionaryWithContentsOfFile: infoTemplatePath]; 
    [info writeToFile: path]; 
    } 
} 
+0

내가 다른 클래스에서 파일에 기록하고 싶습니다. applicationDidFinishLoading 메서드에서 위의 코드와 비슷한 것을 시도한 다음 다른 클래스에 고유 한 경로가있는 동일한 코드를 삽입합니까? 또한 예를 들어해야합니까? 내 리소스 폴더에 빈 plist로 something.plist? 문안 인사 – jarryd

1

NSFileManger의 fileExistsAtPath:을 사용하여 파일이 존재하는지 확인하십시오. 파일이 필요한 코드로 이동하기 전에 파일을 만들지 마십시오.

1

이 사람은 나를 위해 잘 작동 :

 NSFileManager *fileManager = [NSFileManager defaultManager]; 
    NSError *error; 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *documentDBFolderPath = [documentsDirectory stringByAppendingPathComponent:@"*.db"]; 

    if (![fileManager fileExistsAtPath:documentDBFolderPath]) 
    { 
     NSString *resourceDBFolderPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"*.db"]; 
     [fileManager copyItemAtPath:resourceDBFolderPath toPath:documentDBFolderPath error:&error]; 
    }