Russian Qt Forum
Ноябрь 23, 2024, 04:19 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Создание SQLite базы в iOS  (Прочитано 5214 раз)
RustAlex
Гость
« : Сентябрь 13, 2016, 11:53 »

Разработано и успешно работает приложение для Android с использованием SQLite. Оно же успешно запускается при перекомпиляции под MAC OS X или Windows. Но попытка запустить его на iOS приводит к возникновению проблем при первоначальном создании базы.
База содается с использованием следующего кода:
Код
C++ (Qt)
   QString fileName(baseFileName);
   QString path(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation));
   DB = QSqlDatabase::addDatabase("QSQLITE");
 
   DB.setDatabaseName(path + fileName);

Путь вроде корректно задается... Или все таки для iOS какие-то особенности есть?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Сентябрь 13, 2016, 14:31 »

куда указывает сформированный путь? в Documents приложения?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
RustAlex
Гость
« Ответ #2 : Сентябрь 13, 2016, 16:18 »

СУБД: Путь к базе данных:  "/var/mobile/Containers/Data/Application/15007D72-0222-4D4A-9A06-54C87BDCDFCE/Library/Application Support/eorAndroid/BaseData.sqlite"

У меня подозрения что надо в xCode какие-то разрешения включить.

Потому что переменная AppDataLocation актуальна для iOS: "<APPROOT>/Library/Application Support"
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #3 : Сентябрь 14, 2016, 01:00 »

разрешения никакие не нужны.
"<APPROOT>/Library/Application Support"
Код
C++ (Qt)
DB.setDatabaseName(path + fileName);
...Library/Application Support/eorAndroid/BaseData.sqlite
а откуда берется eorAndroid? это часть имени файла?

может еще стоит это учесть:
Цитировать
All content in this directory should be placed in a custom subdirectory whose name is that of your app’s bundle identifier or your company.

а проблемы-то какие возникают? просто файл БД не создается?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
RustAlex
Гость
« Ответ #4 : Сентябрь 14, 2016, 10:37 »

eorAndroid  - имя приложения

Да - проблема именно в том что файл не создается:
QSqlError("-1", "Error opening database", "out of memory")
Записан
RustAlex
Гость
« Ответ #5 : Сентябрь 14, 2016, 11:10 »

Следом идет еще какой-то подозрительный assert:

ASSERT: "m_qioswindow->geometry().size() == bounds" in file quiview.mm, line 189

Но с созданием базы это не связано.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.087 секунд. Запросов: 23.