база данных sqlite сбрасывается при каждой компиляции и запуске - PullRequest
0 голосов
/ 08 мая 2011

Я создал базовое приложение базы данных, в котором пользователь может вставлять записи в таблицу, а приложение отображает их в TableView.

Все работает так, как должно быть. Например, новые записи отображаются, даже если мы убиваем приложение из переключателя приложений и перезапускаем его с трамплина.

НО каждый раз, когда я создаю и запускаю с использованием Xcode, база данных просто отправляется в записи по умолчанию! Новых записей просто нет.

Это нормально? ... но что если я захочу проверить мое приложение на наличие новых записей? Любое исправление?

Кстати, JFYI, ниже приведен код, который я использую для создания редактируемой БД.

-(NSString *)createEditableDatabase{
// Check if DB already exists
BOOL success;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
NSString *writableDB = [documentsDir stringByAppendingPathComponent:@"Database.db"];

success = [fileManager fileExistsAtPath:writableDB];

//The editable DB already exists
if (success) {
    return writableDB;
}


//The editable DB does not exist
//Copy the default DB into App's Doc Dir.

NSString *defaultPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Database.db"];

success = [fileManager copyItemAtPath:defaultPath toPath:writableDB error:&error];

if (!success) {
    NSAssert1(0, @"Failed to create writable DB file: '%@'", [error localizedDescription]);
}
return writableDB;

}

1 Ответ

0 голосов
/ 09 мая 2011

При копании глубже я заметил, что дата изменения базы данных в Finder не обновлялась, когда я вставлял запись. Итак, я обнаружил, что я все еще использовал старый путь для выполнения операций с БД (а не Документы). :) Теперь все работает нормально. В любом случае спасибо Ник

...