База данных SQLite на iPhone и Симуляторе - PullRequest
3 голосов
/ 09 июня 2011

Я создаю базу данных и помещаю файл * .sqlite в папку recources в Xcode. Перед открытием базы данных я копирую ее в папку документов из ресурсов. Это прекрасно работает на симуляторе, но не работает на iPhone. По некоторым причинам файл базы данных не существует на устройстве iPhone. Это мой код:

   NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDir = [documentPaths objectAtIndex:0];
    NSString *databasePath = [documentsDir stringByAppendingPathComponent:databaseFileName];


    NSFileManager *fileManager = [NSFileManager defaultManager];
    BOOL success = [fileManager fileExistsAtPath:databasePath];
    if(!success) // all the time it's YES, even if I delete database
    {
        // copy database from application folder
        NSString *databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:databaseFileName];
        BOOL fileExists = [fileManager fileExistsAtPath:databasePathFromApp];
        if (fileExists) { // It's NO, for some reasons database does not exist
            [fileManager removeItemAtPath:databasePath error:nil];
            [fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil];
        }

        [fileManager release];
    }

    return databasePath;

По некоторым причинам эта строка постоянно возвращает NO

        BOOL fileExists = [fileManager fileExistsAtPath:databasePathFromApp];

путь в databasePathFromApp примерно такой

/ вар / александр / ххх-ххх-ххх-ххх .... / AppName.app/database.sqlite

Вопрос: почему база данных не существует в ресурсах?

Ответы [ 2 ]

3 голосов
/ 10 июня 2011

Наконец-то обнаружена проблема.Устройства iPhone заботятся о регистре имен файлов, поэтому «database.sqlite» и «DataBase.sqlite» - это разные файлы для устройства, но те же файлы для симулятора.Это так странно.

Я поставил его в блоге Не могу открыть файл на устройстве iPhone, но могу в симуляторе iPhone

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

Удалить базу данных из ресурса и добавить ее еще раз, а сверху появляется флажок Копировать элементы в папку целевой группы.

Очистить цели и сбросить симулятор.

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