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

StackOverflow https://stackoverflow.com/questions/159889

  •  03-07-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

enter image description here

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top