sqlite3 на эмуляторе iPhone в сравнении с разрешениями устройства? - PullRequest
0 голосов
/ 19 апреля 2010

Хорошо, теперь я закончил разработку на эмуляторе, и когда я установил на своем тестовом устройстве, я получил ошибку

попытка записи в базу данных только для чтения

Какие настройки для управления доступом к БД? Будет ли это трудно управлять при развертывании?

Больше информации ... Я думаю, что я знаю, что происходит ... Когда я ищу свою БД, она не совпадает с учебниками. Что мне нравится делать, так это иметь группу, которая находится ниже корневой папки проекта для «Контента». Я добавил файл JustADatabase.sqlite в эту группу по своему заданному пути. Поскольку не все пути доступны для записи, я предполагаю, что созданный пользователем путь недоступен для записи при установке.

Я считаю, что есть способ использовать скрипт сборки / копирования для установки файла в нужное место.

Как вы думаете, это проблема? Знаете ли вы, как написать скрипт для исправления или как правильно разместить файл в моем проекте, чтобы он правильно копировался? Ниже приведен код, ведущий к команде sqlite-open с закомментированными путями 'tutorial'. Это работает для чтения и может быть причиной отказа в доступе на запись.

- (void)initializeDatabase {

    // ??? NSArray  *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    // ??? NSString *documentsDirectory = [paths objectAtIndex:0];
    // ??? NSString *pathTutorial = [documentsDirectory stringByAppendingPathComponent: @"JustaDatabase.sqlite"];
    NSString *path = [[NSBundle mainBundle] pathForResource:@"JustaDatabase" ofType:@"sqlite"]; 

    if( sqlite3_open([path UTF8String], &database) == SQLITE_OK ) {
        NSLog(@"%s: opened database %@", __FUNCTION__, path);
    } else {
        NSAssert1(0,@"Failed to open database: '%s'.", sqlite3_errmsg(database));
    }
}

1 Ответ

1 голос
/ 19 апреля 2010

разрешения sqlite3 - это просто права доступа к файлу.

вам необходимо скопировать файл db в каталог документов, так как вы не можете записать в файл в каталоге пакета на устройстве.

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