Хорошо, теперь я закончил разработку на эмуляторе, и когда я установил на своем тестовом устройстве, я получил ошибку
попытка записи в базу данных только для чтения
Какие настройки для управления доступом к БД? Будет ли это трудно управлять при развертывании?
Больше информации ... Я думаю, что я знаю, что происходит ... Когда я ищу свою БД, она не совпадает с учебниками. Что мне нравится делать, так это иметь группу, которая находится ниже корневой папки проекта для «Контента». Я добавил файл 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));
}
}