Как получить доступ к экземпляру базы данных SQLite на iPhone? - PullRequest
33 голосов
/ 02 октября 2008

Я разрабатываю приложение для iPhone, которое использует встроенную базу данных SQLite. Я пытаюсь просмотреть и открыть базу данных с помощью инструмента командной строки sqlite3, чтобы я мог выполнить произвольный SQL для нее.

Когда я запускаю свое приложение в симуляторе, файл .sqlite, который он создает, находится в ~/Library/Application Support/iPhone Simulator/User/Applications/.

Как я могу увидеть этот файл на физическом iPhone?

Ответы [ 8 ]

69 голосов
/ 23 сентября 2014

Инструкция для Xcode 6.0.1

  1. Xcode> Open> YourProject
  2. Xcode> Product> Run
  3. Xcode> Окно> Устройства
  4. (столбец 1 - выберите) Устройства> YourDeviceName
  5. (Столбец 2 - выберите) Установленные приложения> YourAppName
  6. (столбец 2 - выберите) Cog в списке «Установленные приложения»
  7. (всплывающее окно - выберите) Загрузить контейнер ...
  8. Сохранить в местоположении
  9. Щелкните правой кнопкой мыши на «YourAppName.xcappdata»
  10. Выберите «Показать содержимое пакета»
  11. AppData> Документы> YourDatabase.sqlite

enter image description here

43 голосов
/ 02 октября 2008

В Xcode выберите окно-> органайзер и разверните узел рядом с вашим приложением в разделе приложений на вашем телефоне. Выберите черную стрелку, указывающую вниз, рядом с данными приложения и сохраните файл в любом месте на рабочем столе. Ваша база данных sqlite должна быть где-то там.

Что касается того, как вернуть его на телефон, как только вы закончите, я понятия не имею.

2 голосов
/ 23 января 2013

Это работает, если вы делаете джейлбрейк вашего iPhone .. Я не знаю, почему у кого-то возникли бы проблемы с джейлбрейком их телефона, так как я использовал его для разработки в течение довольно долгого времени и не обнаружил проблем, также необычно для sqlite по-разному на устройстве против симулятора:

  1. Джейл сломает ваш телефон (есть учебники по всей сети)
  2. Установите свой уровень пользователя cydia на developer
  3. Установите sqlite3 в свой телефон: перейдите в cydia> управлять> источниками> cydia / telesphoreo> sqlite3
  4. ssh в телефон с помощью iphone tunnel пароль root ssh: «alpine»
  5. Введите which sqlite3, чтобы убедиться, что он установлен
  6. перейдите к местоположению вашей базы данных .. точка останова в вашем коде должна сказать вам, где она находится .. в моем коде это выглядит примерно так

    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-операторы прямо на вашем телефоне ... без копирования или чего-либо еще.

2 голосов
/ 26 декабря 2011

В XCode 4 вы делаете то же самое, что предлагали залы ожидания, что сохранит всю файловую структуру вашего приложения по вашему выбору. Переименуйте файл .xcappdata, который сохраняется в .sqlite, чтобы вы могли открыть его двойным щелчком мыши, чтобы затем найти файл с устройства.

1 голос
/ 02 октября 2008

Точно так же, как вы делаете на симуляторе. Между устройством и имитатором очень мало (важных) различий, и доступ к файлам и загрузка библиотек по большей части не являются их частью.

0 голосов
/ 21 апреля 2016

Метод Download Container - тот, который я считаю лучшим. Однако вы должны быть осторожны, что в некоторых случаях, если вы попытаетесь отправить его по электронной почте или прикрепить из приложения, файл, который будет отправлен, будет пустым.

0 голосов
/ 02 июля 2013

Самый простой способ сделать это - использовать iExplorer для загрузки файла из вашего приложения. а затем используйте SQLite Professional только для чтения , чтобы прочитать файл. Даже думал, что это не в реальном времени, но, по крайней мере, это бесплатно. : -)

0 голосов
/ 02 октября 2008

Ваш вопрос остается немного расплывчатым. «Видите» в каком смысле? Вы создаете базу данных SQLite? Как? Вы поместили его вручную в область файловой системы симулятора? Возможно, вы спрашиваете, как это сделать на iPhone?

Самый простой способ - создать пустую базу данных с помощью инструмента командной строки sqlite3, использовать ее в качестве ресурса в приложении, а затем скопировать в папку документов изолированной программной среды приложения. Вы можете получить путь к своей папке ресурсов с помощью метода pathForResource: ofType: метода NSBundle, затем получить путь к папке с документами через NSSearchPathForDirectoriesInDomains () для папки NSDocumentsDirectory в NSUserDomainMask, а затем скопировать файл с помощью методов NSFileManager.

В противном случае вы можете использовать функции SQLite для создания новой базы данных с нуля, предоставляя соответствующие команды SQL для определения ее схемы.

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