Как получить доступ к экземпляру базы данных SQLite на iPhone?
Я разрабатываю приложение для iPhone, которое использует встроенную базу данных SQLite. Я пытаюсь просмотреть и открыть базу данных с помощью инструмента командной строки sqlite3
, чтобы я мог выполнить произвольный SQL против него.
Когда я запускаю свое приложение в симуляторе, файл .sqlite
, который он создает, находится в ~/Library/Application Support/iPhone Simulator/User/Applications/
.
Как я могу увидеть этот файл на физическом iPhone?
Ответы
Ответ 1
В Xcode выберите window- > organizer и разверните node рядом с вашим приложением в разделе приложений на вашем телефоне. Выберите черную направленную вниз стрелку рядом с данными приложения и сохраните файл в любом месте на рабочем столе. Ваша база данных sqlite должна быть где-то там.
Что касается того, как начать получать его обратно по телефону, как только вы закончите, у меня нет подсказки.
Ответ 2
Инструкции для Xcode 6.0.1
- Xcode > Открыть > Ваш проект
- Xcode > Продукт > Запуск
- Xcode > Окно > Устройства
- (Столбец 1 - выберите) Устройствa > Имя_пользователя
- (Столбец 2 - выберите) Установленные приложения > YourAppName
- (Столбец 2 - выберите) Cog в списке "Установленные приложения"
- (всплывающее меню - выберите) Скачать Контейнер...
- Сохранить в местоположении
- Щелкните правой кнопкой мыши на 'YourAppName.xcappdata'
- Выберите "Показать содержимое пакета"
- AppData > Документы > YourDatabase.sqlite
![enter image description here]()
Ответ 3
В XCode 4 вы делаете то же самое, что и предлагаемые Lounges, которые сохранят всю структуру файла для вашего приложения в выбранном вами месте. Переименуйте файл .xcappdata, который сохраняется в .sqlite, чтобы открыть его, дважды щелкнув, затем вы можете найти файл с устройства.
Ответ 4
Это работает, если вы делаете джейлбрейк вашего iPhone... Я не знаю, почему у кого-то возникли бы проблемы с джейлбрейком их телефона, так как я использовал его для разработки в течение довольно долгого времени и не обнаружил никаких проблем, также это не редкость для sqlite выполнить по-другому на устройстве против симулятора:
- Jail сломать ваш телефон (есть учебники по всей сети)
- Установите свой уровень пользователя Cydia для разработчика
- Установите sqlite3 на свой телефон: зайдите в cydia> управлять> исходниками> cydia/telesphoreo> sqlite3
- SSH в телефон с помощью туннеля iphone root пароль SSH: "Alpine"
- Введите
which sqlite3
чтобы убедиться, что он установлен. -
перейдите к местоположению вашей базы данных.. точка останова в вашем коде должна сказать вам, где она находится.. в моем коде это выглядит примерно так
NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex: 0];
NSString *pathName = [documentsDirectory stringByAppendingPathComponent:filename];
return pathName;
Обратите внимание, что если вы запустите это на симуляторе.. вы получите расположение, подобное следующему: /Users/admin/Library/Application Support/iPhone Simulator/6.0/Applications/42302574-7722-48C1-BE00-91800443DA7C/Documents/email-524200.edb
На устройстве это будет выглядеть так: /var/mobile/Applications/FB73857F-A822-497D-A4B8-FBFB269A8699/Documents/email-523600.edb
Затем просто наберите sqlite3 %dbname%
и вы сможете выполнять операторы sql прямо на вашем телефоне... без копирования или чего-либо еще.
Ответ 5
Точно так же вы делаете на симуляторе. Между устройством и симулятором очень мало (важных) различий, а доступ к файлам и загрузка библиотеки по большей части не являются их частью.
Ответ 6
Ваш вопрос остается немного расплывчатым. "Смотрите" в каком смысле? Вы создаете базу данных SQLite? Как? Вы разместили его вручную в области файловой системы Simulator? Возможно, вы спрашиваете, как это сделать на iPhone?
Самый простой способ - создать необработанную базу данных с помощью инструмента командной строки sqlite3, использовать его как ресурс в своем приложении, а затем скопировать его в папку документов для песочницы приложений. Вы можете получить путь к папке ресурсов через NSBundle pathForResource: fromType: method, затем захватить путь к папке "Документы" через NSSearchPathForDirectoriesInDomains() для папки NSDocumentsDirectory в NSUserDomainMask, а затем скопировать файл с помощью методов NSFileManager.
В противном случае вы можете использовать функции SQLite для создания новой базы данных с нуля, предоставив соответствующие SQL-команды для определения своей схемы.
Ответ 7
Самый простой способ сделать это - использовать iExplorer для загрузки файла из вашего приложения. а затем используйте SQLite Professional для чтения, чтобы прочитать файл.
Даже подумал, что это не в реальном времени, но, по крайней мере, это бесплатно.: -)
Ответ 8
Метод Download Container - тот, который я считаю лучшим. Тем не менее, вы должны быть осторожны, если несколько раз, если вы попытаетесь отправить его по электронной почте или подключить к нему из приложения, тогда отправляемый файл будет пустым.