2010-04-19 2 views
0

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

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

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

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

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

Считаете ли вы, что это проблема? Вы знаете, как выполнить сценарий исправления или как поместить файл в нужное место в моем проекте, чтобы он был скопирован правильно? Ниже приведен код, ведущий к команде sqlite-open с пропущенными «учебными» путями. Это работает для чтения и может быть причиной отказа в доступе к записи.

- (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

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

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

Смежные вопросы