Где находится моя база данных моего приложения для macOS?

#macos #cocoa #core-data #macos-sierra

#macos #cocoa #core-data #macos-sierra

Вопрос:

Каково расположение базы данных приложения macOS при использовании Core Data?

Я искал везде на своем Mac и не нашел его.
У меня отключены скрытые файлы, и я уверен, что в моей базе данных есть данные. Также я не использую app Sandbox.

Ответ №1:

Если у вас включена песочница для вашего приложения, она будет размещена в разделе ~/Library/Containers/app.bundle.id/Data/Library/Application Support/AppTargetName где app.bundle.id указан ли идентификатор пакета в цели вашего приложения, а AppTargetName — это имя этой цели, то есть имя сгенерированного файла .app. В этой папке вы должны найти файлы SQLite, которые содержат данные базы данных.

Ответ №2:

Найдите persistentStoreCoordinator метод в вашем AppDelegate.m . Есть строка

 NSURL *applicationDocumentsDirectory = [self applicationDocumentsDirectory];
  

Просто добавьте

 NSLog(@"myDirectory: %@", applicationDocumentsDirectory);
  

Предполагается, что вы начали свой проект с шаблона Cocoa Xcode 8 с опцией «использовать Core Data».

Или добавить

 NSLog(@"Array of CD stores: %@", self.persistentStoreCoordinator.persistentStores);
  

например, для applicationDidFinishLaunching . Результирующий путь должен быть в библиотеке вашего пользователя Users/<user>/Library/Application Support/<whatever>/<appname>.storedata .

Комментарии:

1. Спасибо. База данных находилась в папке: com.apple.toolsQA.CocoaApp_CD. Теперь мне нужен пароль для открытия приложения «DB browser for SQLite», где его найти, пожалуйста?

2. Пожалуйста, будьте более конкретны. Зачем вам нужен «DB Browser for SQLite»? Зачем ему нужен пароль?

3. Я хочу управлять своей базой данных в raw, я имею в виду без Xcode. Например, вы можете управлять базой данных MySQL в MyAdminPHP. Итак, у меня есть приложение, которое может открыть мою базу данных .SQLite, но для этого требуется пароль.

4. Обычно для открытия файла базы данных не требуется пароль. Я понятия не имею, что происходит.

Ответ №3:

Спросите своего NSPersistentStoreCoordinator.