Как напрямую хранить данные SQLite в XCode? - PullRequest
0 голосов
/ 02 мая 2010

Поискал здесь и получил несколько расплывчатых ответов, поэтому я подумал, что перефразирую проблему, чтобы получить более четкие ответы-

Сейчас у меня есть база данных SQL Lite, которая читает / анализирует информацию из предварительно отформатированного файла .txt. Когда я открываю приложение, возникает небольшая задержка, поскольку iDevice анализирует информацию, а затем извлекается для iDevice. Мне просто интересно, есть ли способ просто «сохранить» всю информацию прямо в xCode, чтобы не было времени задержки / выборки?

Спасибо.

1 Ответ

0 голосов
/ 02 мая 2010

Что вы можете сделать, это предварительно собрать базу данных sqlite и затем включить ее в качестве ресурса в свое приложение. Поскольку эта база данных находится в вашем комплекте приложений, она будет доступна только для чтения на вашем устройстве, поэтому вам нужно будет сделать ее копию в области документов приложения.

Я успешно использовал что-то вроде следующего кода в производственном приложении для iPhone

NSArray *searchPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentFolderPath = [searchPaths objectAtIndex: 0];

NSString* dbFilePath = [documentFolderPath stringByAppendingPathComponent: DATABASE_FILE_NAME]; 


if(![[NSFileManager defaultManager] fileExistsAtPath: dbFilePath]) {
    // copy the template database into the right place
    NSError* error = nil;
    [[NSFileManager defaultManager] copyItemAtPath: [[NSBundle mainBundle] pathForResource: @"template" ofType: @"db"] toPath: dbFilePath error: &error];
    if(error) {
        @throw [NSException exceptionWithName: @"DB Error" reason: [error localizedDescription] userInfo: nil];
    }
}

int dbrc; // database return code
dbrc = sqlite3_open ([dbFilePath UTF8String], &db);
if(IS_SQL_ERROR(dbrc)) {
    @throw [NSException exceptionWithName: @"DB Error" reason: NSLocalizedString(@"Could not open database", @"Database open failed") userInfo: nil];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...