Я работаю над приложением базы данных, которое отлично работает в симуляторе (вставляет, обновляет, удаляет все функции правильно).Моя проблема начинается при попытке установить / запустить приложение на 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», причина:«Не удалось создать доступный для записи файл базы данных:« Операция не может быть завершена.Нет такого файла или каталога '.'
Заранее благодарен за любую помощь, которую вы можете мне оказать, и я приношу свои извинения, если текст моего вопроса не отформатирован должным образом - я впервые задаю вопрос на этом сайте.
(Я посмотрел на два других вопроса, где возникала та же проблема, и проверил, применили ли они те же проблемы к моей ситуации, но это не так.)