Как найти файл моего царства?


239

Я создал БД по областям, и я не могу найти файл, так как в моей ОС (Yosemite) нет мобильной папки в / private / var / mobile.

Как мне получить доступ к своему царству для запуска в браузере?

Крест опубликован из групп Google


Проверьте это . Этот метод работает как для корневых, так и для некорневых устройств.
Крхитеш

Ответы:


474

В поисках файла области

Для Android

Как просмотреть мой файл Realm в браузере Realm?

Для iOS

Если ваше приложение на устройстве

Убедитесь, что ваше устройство подключено и перейдите в окно устройств в меню Xcode Window> Devices (⌘⇧2). Там вы сможете выбрать свое устройство и приложение из списка установленных приложений с разрешениями на отладку.

После выбора приложения перейдите к шестерне на панели инструментов в нижней части табличного представления и выберите «Загрузить контейнер…» . Там вы сможете вытащить файл из папки с документами на ваш Mac. Он будет сохранен как пакет xcappdata.

Когда вы открываете локальный путь в Finder, где вы его сохранили, вы можете нажать на него, выбрав «Показать содержимое пакета» в контекстном меню искателя при выборе файла. Откроется новое окно поиска, где вы найдете свою область внутри по следующему пути (например): AppData / Documents / default.realm (каталог '/ private / var / mobile' - это путь, который используется iOS на файловая система устройства.

Если ваше приложение на симуляторе

Перейдите в каталог вашего пользователя:

/Users/<username>/Library/Developer/CoreSimulator/Devices/<simulator-uuid>/data/Containers/Data/Application/<application-uuid>/Documents/default.realm

Вероятно, самый простой способ получить текущий путь к области по умолчанию - это приостановить симулятор и ввести в консоль LLDB следующее:

Цель-C :
(lldb) po [RLMRealmConfiguration defaultConfiguration].fileURL

Свифт с использованием Цели Objective-C :
(lldb) po RLMRealmConfiguration.defaultConfiguration().fileURL

Swift с использованием Realm Swift :
(lldb) po Realm.Configuration.defaultConfiguration.fileURL

Или, если у вас есть RLMRealmэкземпляр под рукой, вы можете использовать:
(lldb) po myRealm.configuration.fileURL

Затем просто скопируйте этот путь, откройте свой терминал и введите open [Pasted path here]

ПРИМЕЧАНИЕ. В некоторых путях есть пробел, поэтому обязательно используйте "\" перед пробелом, чтобы избежать его.

Вспомогательный инструмент SimPholder

Вероятно, это самый быстрый способ найти файл приложения в симуляторе. Установите SimPholder . Это позволит вам получить доступ к каталогу документов вашего приложения прямо из строки меню.

Примечание. Некоторые люди упоминали, что SimPholder перенес их в неправильную папку приложения симулятора. Если это так, распечатайте путь к своей области, выполнив шаги, описанные выше, распечатав ваш realm.path.


1
после последнего обновления возникает ошибка, когда вы делаете po RLMRealm.defaultRealmPath(). called object type 'NSString *' is not a function or function pointer
Там

У меня та же проблема, что и у @carbonr. Кто-нибудь может помочь?
denislexic

2
Версия Objective-C выше 0,97 используетсяpo [[RLMRealm defaultRealm]path]
AlexHsieh

5
Часть этого ответа уже устарела. Вот последний способ найти файл базы данных вашей области (default.realm) с помощью RealmSwift:Realm.Configuration.defaultConfiguration.fileURL
nodebase

1
Используя метод RealmSwift, я получаю следующее:error: use of undeclared identifier 'Realm'
Саймон Бенгтссон

122

Я нашел самый простой способ для iOS / MacOS (для Swift 3 Xcode 8.3)

override func viewDidLoad() {

   // for swift 2.0 Xcode 7
   print(Realm.Configuration.defaultConfiguration.fileURL!)
}

Затем код X будет записывать правильный путь, проверьте экран ниже.

введите описание изображения здесь

Теперь откройте ваш Finder и нажмите + + G(команда + Shift + G) и вставьте путь, который входит в ваш Xcode


10
путь устарел. используйте Realm.Configuration.defaultConfiguration.fileURLвместо этого
hewigovens

2
Его изменили на Realm.configuration.fileURL
Решад

3
Swift 3, xcode8.3 также работает сRealm.Configuration.defaultConfiguration.fileURL!
xmhafiz

я следовал тому же процессу, но я не могу найти путь к файлу в
поиске

1
Это идеально подходит для симулятора, и как только вы найдете свой файл, просто нажмите cmd, чтобы «Открыть с помощью», чтобы запустить Realm Studio. Напрашивается вопрос или мысль: Realm Studio нужна опция «открыть недавний» в меню «Файл»!
нарисовал ..

39

Одна простая альтернатива для приложений симулятор

Создать умную папку / поиск в Finder. Дает быстрый и легкий доступ ко всем файлам области.

  1. Откройте папку /Users/$USER/Library/Developer/CoreSimulator/Devicesв Finder.

    С терминалом open /Users/$USER/Library/Developer/CoreSimulator/Devices

  2. Ищи .realm

  3. Измените поиск, чтобы посмотреть только в "Devices"папке.

  1. Сохранить поиск на боковой панели (например, как области)

При сортировке по дате это даст вам быстрый и легкий кликабельный список последних измененных .realmфайлов симулятора .


Спасибо @Archdoog - неплохая идея, когда вы проходите множество новых проектов с Realm
Аллен

4
Сохранение как поиск - гениально! Спасибо! :)
Карлинген

22

Вот простое решение .. Я на некоторое время облажался с этим. Следует отметить, что это особый набор инструкций с использованием Android Studio и эмулятора AVD.

1) Запустите эмулятор и запустите ваше приложение.

2) Пока приложение еще работает, откройте Android Device Monitor. (находится на панели инструментов рядом с иконками менеджера AVD и SDK)

3) Перейдите на вкладку «Проводник» в мониторе устройств. Там должно быть много папок.

4) Перейдите по следующему пути: Данные> Данные> Имя вашего пакета > Файлы> Default.Realm (или как вы его назвали)

Ex. Если вы используете один из примеров проектов области, путь будет выглядеть примерно так: «Данные»> «Данные»> «io.realm.examples.realmgridview> файлы> default.realm».

5) Выделите файл, щелкните значок дискеты в правом верхнем углу «вытащить файл с устройства»

6) Сохраните его там, где вы хотите и сделали.


18

Что я сделал, так это использовал

let realm = Realm(path: "/Users/me/Desktop/TestRealm.realm")

и затем он создается в полном виде на моем рабочем столе, и я могу дважды щелкнуть, чтобы запустить браузер Realm на нем. Позже я могу удалить параметр и позволить ему использовать местоположение по умолчанию, когда я убедился, что все работает как положено.


1
Я получаю сообщение об ошибке «Метки аргумента» (путь :) «не соответствуют ни одной из доступных перегрузок». Есть идеи почему?
Марсело Грасиетти

Это просто потрясающе, ха-ха!
WilomGfx

Отлично подходит для тестирования на симуляторе, но, вероятно, не будет работать правильно на реальном устройстве.
неисправность

пусть царство = попробуй! Область (fileURL: URL (строка: "/Users/[me]/Desktop/TestRealm.realm")!)
Харрис

11

Objective-C - [RLMRealmConfiguration defaultConfiguration].fileURL

NSLog(@"%@",[RLMRealmConfiguration defaultConfiguration].fileURL);

Eg-/ Users / "имя Вашего пользователя" / Library / Developer / CoreSimulator / Devices / E58645FF-90DE-434D-B2EB-FA145EB6F2EA / данные / Контейнеры / Data / Application / E427BD21-2CB1-4F64-9ADF-8742FF731209 / Документы /

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

Или

Вы можете открыть openSim с открытым исходным кодом , альтернативу упрощенным для доступа к каталогу документов вашего приложения прямо из строки меню.


11

В приведенных выше ответах отсутствует способ найти файл области на платформе Android, и, поверьте мне, этот способ сэкономит ваше время, которое мы обычно тратим на другие подходы, чтобы получить файл области. Итак, начнем...

Сначала откройте «Device File Explorer» в Android Studio («Просмотр» -> «Инструменты Windows» -> «Device File Explorer»).

Откроется проводник вашего устройства.

введите описание изображения здесь

Теперь откройте данные -> data -> (your_app_package_name) -> files -> default.realm

default.realm - это файл, для которого мы здесь. Теперь сохраните этот файл в своем местоположении и получите доступ к файлу из realm_browser, и вы получите свою базу данных.

ПРИМЕЧАНИЕ. Упомянутый подход проверен на телефоне без рута (один + 3).


10

Если вы используете Realm DB по умолчанию в симуляторе:

po Realm().configuration.fileURL

Можете ли вы добавить некоторые детали?
Зеешан

@zeeshan, пожалуйста, приостановите симулятор во время работы и введите команду, затем нажмите enter.
superarts.org

9

Обновленный ответ на новейшее Царство:

Для Android:

Оформить заказ stetho и https://github.com/uPhyca/stetho-realm Видеоруководство здесь: https://www.youtube.com/watch?v=9pFJz5VexRw

Для IOS (Swift)

Либо:

debugPrint("Path to realm file: " + realm.configuration.fileURL!.absoluteString)

или

Шаг 1: где-нибудь есть константа с именем dev. Допустим, константный файл

public class Constants {

    public static var dev: Bool = true

}

Шаг 2. Создайте еще один класс с именем RealmFunctions.swift.

import RealmSwift


func realmAndPath() -> Realm {
    if Constants.dev {
        // location of my desktop
        let testRealmURL = NSURL(fileURLWithPath: "/Users/#####/Desktop/TestRealm.realm")
        return try! Realm(fileURL: testRealmURL)
    } else {
        return try! Realm()
    }
}

Шаг 3: наконец, в вашем представлении контроллер:

let realm = realmAndPath()

спасибо Стюарту Линчу за оригинальный ответ


для быстрой 3 мне нужно было перейти realm.pathнаrealm.configuration.fileURL!.absoluteString
Энди

5

Если вы получаете сообщение об ошибке «Введите ключ шифрования»:

Я использую Swift 2.1 с Realm 0.96.2 и получаю эту ошибку при попытке открыть файл базы данных:

«по умолчанию» не может быть открыт. Это может быть зашифровано, или это не в совместимом формате файла. Если вы знаете, что файл зашифрован, вы можете вручную ввести его ключ шифрования, чтобы открыть его.

Обнаружено, что при использовании предварительной версии Realm Browser 0.96 исправлена ​​проблема:

https://github.com/realm/realm-browser-osx/releases/tag/0.96-prerelease


3

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

Чтобы открыть последнюю созданную базу данных Xcode Simulator Realm в браузере Realm, вы можете использовать этот скрипт в Automator или ввести его все в терминале. С помощью Automator у меня есть доступ одним щелчком к моей текущей области.

    cd ~/Library/Developer/CoreSimulator/Devices/
    cd `ls -t | head -n 1`/data/Containers/Data/Application
    cd `ls -t | head -n 1`/Documents    
    open -a 'Realm Browser' ./default.realm

Установите Realm Browser. В Automator нажмите «Создать», выберите «Выполнить сценарий оболочки», вставьте код, измените имя базы данных Realm, нажмите «Выполнить» для проверки, сохраните файл в удобном для быстрого доступа месте.

Я не знаю, где я нашел этот совет в первый раз, но эта ветка напомнила мне, как я обращался к своим живым данным в прошлом.


3

Просто для вашего приложения на iOS симуляторе

Войти

console.log (Realm.defaultPath)

в коде, например: App.js


2

Я сделал еще один шаг вперед. Я создал быстрый файл под названием RealmFunctions и в нем я создал эту функцию

    import RealmSwift
    func realmAndPath() -> Realm {
        if dev {
            // location of my desktop
            return try! Realm(path: "/Users/slynch/Desktop/TestRealm.realm")
        } else {
            return try! Realm()
        }
    }

Теперь в моем контроллере основного вида у меня есть глобальная логическая переменная с именем dev

var dev: Bool = true // when in development mode
var dev: Bool = false // when I want to run on my device or upload to app stor.

Теперь все, что мне нужно сделать в моем коде

let realm = realmAndPath()

Поэтому, находясь в режиме разработки, я могу найти свою базу данных областей на рабочем столе и открыть в браузере областей.


1
Ошибка: (13, 21) метки аргумента '(путь :)' не соответствуют никаким доступным перегрузкам, кажется, они изменились в более новых версиях
OWADVL

2

Я нашел файл области действия , выполнив эту команду в терминале: sudo find / -name "*.realm".

Надеюсь это поможет!



1

Чтобы получить путь к БД для iOS, самый простой способ:

  1. Запустите ваше приложение в симуляторе
  2. Приостановить это в любое время в отладчике
  3. Перейдите в консоль (где у вас есть (lldb)) и введите:po RLMRealm.defaultRealmPath

Тада ... у вас есть путь к вашей базе данных области



1

Для тех, кто использует React Native и использует область по умолчанию:

Realm.defaultPath


Я не могу найти это!
Али Хесари

@Natividad, где поставить этот код? какие-либо предложения по получению файла области?
Бикрам Тхапа

@AliHesari ты нашел что-нибудь?
Бикрам Тхапа

componentDidMount() { console.log(Realm.defaultPath) }в моем компоненте использование Realm работало для меня. Проверьте консоль XCode для пути позже.
Пол Шори

0

Под Инструменты -> Android Device Monitor

И под проводником. Поиск приложений. И файл находится в разделе data / data.


0

Правильная команда lldb для Xcode 7, Swift 2.2+ po Realm.Configuration.defaultConfiguration.path!


1
участник не вызывается, pathно fileURL: Realm.Configuration.defaultConfiguration.fileURL!
Нберк

1
вы правы ... это изменилось в realm1.0 ... я использовал версию 0.98, когда я ответил на это ... правильный ответ po Realm.Configuration.defaultConfiguration.fileURL?.path
Marquis103

0

Решение Swift 2.3

Более простое решение, которое не сломается с обновлениями Realm

    let dirPaths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
    print("App Path: \(dirPaths)")

Файл .realm должен быть внутри «Документы»

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.