Тестирование приложения базы данных sqlite на устройстве - PullRequest
0 голосов
/ 11 июня 2011

Я работаю над приложением базы данных, которое отлично работает в симуляторе (вставляет, обновляет, удаляет все функции правильно).Моя проблема начинается при попытке установить / запустить приложение на iPhone.

При первом запуске программа создает редактируемую версию базы данных в каталоге документов приложения.Мой тест не пройден, если база данных не найдена в комплекте приложений.База данных была добавлена ​​в папку «Ресурсы» в XCode.

Код для проверки существующей версии базы данных (в сочетании с несколькими операторами NSLog) и ее создания, если она еще не существует, выглядит следующим образом.:

- (NSString *) createWriteableDatabase {BOOL databaseExists;Ошибка NSError *;

NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
NSString *writeableDB = [documentsDir stringByAppendingPathComponent:@"flashCard.db"];

NSLog(@"writeableDB = '%@'.", writeableDB);

databaseExists = [fileManager fileExistsAtPath:writeableDB];

NSLog(@"databaseExists = %d.", databaseExists);

if (databaseExists)
    return writeableDB;

//--- Writeable version of database does not exist -- copy from bundled software. ---

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

NSLog(@"defaultPath = '%@'.", defaultPath);

databaseExists = [fileManager fileExistsAtPath:defaultPath];

NSLog(@"databaseExists = %d.", databaseExists);

databaseExists = [fileManager copyItemAtPath:defaultPath toPath:writeableDB error:&error];

if (!databaseExists)
{
    NSAssert1(0, @"Failed to create writeable database file: '%@'.", [error localizedDescription]);
    return @"";
}

return writeableDB;

}

В отладчике отображаются следующие сообщения:

предупреждение: невозможно прочитать символы для / XCode 3.2.5 / Platforms/iPhoneOS.platform/DeviceSupport/4.3.3 (8J2) /Symbols/System/Library/AccessibilityBundles/AccessibilitySettingsLoader.bundle/AccessibilitySettingsLoader (файл не найден).2011-06-10 21: 12: 11.130 FlashEm [3768: 707] writeableDB = '/var/mobile/Applications/9DBC50B5-2559-4E6A-BD21-B5B56D9DA18A/Documents/flashCard.db'.2011-06-10 21: 12: 11.144 FlashEm [3768: 707] databaseExists = 0. 2011-06-10 21: 12: 11.149 FlashEm [3768: 707] defaultPath = '/ var / mobile / Applications / 9DBC50B5-2559-4E6A-BD21-B5B56D9DA18A / FlashEm.app / flashCard.db.2011-06-10 21: 12: 11.154 FlashEm [3768: 707] databaseExists = 0. 2011-06-10 21: 12: 11.169 FlashEm [3768: 707] * Ошибка подтверждения в - [DBAccess createWriteableDatabase], /Пользователи / marathoner1234 / Проекты / FlashEm / Классы /../ DBAccess.m: 92 2011-06-10 21: 12: 11.201 FlashEm [3768: 707] * Завершение работы приложения из-за невыполненного исключения «NSInternalInconsistencyException», причина:«Не удалось создать доступный для записи файл базы данных:« Операция не может быть завершена.Нет такого файла или каталога '.'

Заранее благодарен за любую помощь, которую вы можете мне оказать, и я приношу свои извинения, если текст моего вопроса не отформатирован должным образом - я впервые задаю вопрос на этом сайте.

(Я посмотрел на два других вопроса, где возникала та же проблема, и проверил, применили ли они те же проблемы к моей ситуации, но это не так.)

1 Ответ

0 голосов
/ 11 июня 2011

в вашем отчете о сбое говорится, что файл вашей базы данных не найден в вашем каталоге документов.Это происходит только в том случае, если вы неправильно установили файл базы данных внутри вашей папки ресурсов, то есть внутри вашего пакета, поэтому программа на устройстве iphone не может прочитать ваш файл базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...