Подтвердить что ты не робот

Как получить доступ к экземпляру базы данных SQLite на iPhone?

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

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

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

4b9b3361

Ответ 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 выполнить по-другому на устройстве против симулятора:

  1. Jail сломать ваш телефон (есть учебники по всей сети)
  2. Установите свой уровень пользователя Cydia для разработчика
  3. Установите sqlite3 на свой телефон: зайдите в cydia> управлять> исходниками> cydia/telesphoreo> sqlite3
  4. SSH в телефон с помощью туннеля iphone 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 прямо на вашем телефоне... без копирования или чего-либо еще.

Ответ 5

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

Ответ 6

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

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

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

Ответ 7

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

Ответ 8

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