Добавление файла в каталог документов (или в другом месте)? - PullRequest
2 голосов
/ 26 января 2010

Я хочу инициализировать мое приложение с небольшой базой данных sqlite3. Я пытался поместить его в каталог Documents, но иногда он копирует его с нулевым размером, а иногда вообще не копирует.

Как мне инициализировать мое приложение с БД, полной информации?

Thankyou

Ответы [ 2 ]

4 голосов
/ 26 января 2010

Как вы копируете это с вашим приложением?
Если вы отправляете свое приложение с БД в комплекте приложений (в качестве ресурса), вам следует скопировать его в папку документов из ресурсов, если оно отсутствует, и работать с ним там:

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 голос
/ 26 января 2010

Спасибо, Владимир,

Это было полезно. Я сделал несколько изменений, и вот окончательный результат, который прекрасно работает:

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];
...