2010-01-26 5 views
2

Je veux initialiser mon application avec une petite base de données sqlite3. J'ai essayé de le mettre dans le répertoire Documents, mais parfois il le copie avec une taille nulle et parfois il ne le copie pas du tout.Ajouter un fichier au répertoire Documents (ou ailleurs)?

Comment sholud-je initialiser mon application avec une base de données complète?

Thankyou

Répondre

4

Comment copier-vous à votre demande?
Si vous expédiez votre application avec DB à l'intérieur paquet d'applications (comme une ressource), vous devez copier dans le dossier des documents à partir des ressources si elle est absente et travailler avec là:

NSFileManager *fileManager = [[NSFileManager defaultManager] autorelease]; 
BOOL exists = [fileManager fileExistsAtPath:databasePath]; 

if (exists) { 
    return; 
} 

NSString *databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:databaseName]; 
[fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil]; 
1

Merci Vladimir,

C'était utile. J'ai fait quelques changements et voici le résultat final qui fonctionne bien:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

NSString *documentsDirectory = [paths objectAtIndex:0]; 

NSString *databasePath = @"personalLMS.s3db"; 

NSFileManager *fileManager = [[NSFileManager defaultManager] autorelease]; 

NSString * databasePathFromApp = [[NSBundle mainBundle] pathForResource:@"personalLMS" ofType:@"s3db"]; 

[fileManager copyItemAtPath:databasePathFromApp toPath:[documentsDirectory stringByAppendingPathComponent:databasePath] error:nil]; 
Questions connexes