2010-07-13 1 views

Répondre

1

Si vous avez déjà une version de modèle du document dans l'ensemble de votre application, vous devriez pouvoir l'écrire dans le répertoire de document de l'application en utilisant quelque chose de semblable à ce qui suit. Je n'ai pas testé ce code, donc j'ai probablement quelques erreurs, mais c'est l'idée générale.

- (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

Je voudrais écrire des fichiers à partir d'autres classes. Est-ce que j'essaye quelque chose semblable au code ci-dessus dans la méthode applicationDidFinishLoading et puis mets le même code avec leurs chemins uniques dans les autres classes? Dois-je aussi avoir, par exemple, quelque chose.plist comme une plist vide dans mon dossier de ressources? Cordialement – jarryd

1

Utilisez fileExistsAtPath: de NSFileManger pour voir si le fichier existe. Si ce n'est pas le cas, créez-le avant de passer au code qui nécessite le fichier.

1

Celui-ci fonctionne mieux pour moi:

 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]; 
    } 
Questions connexes