Можно ли сделать так, чтобы папка выглядела и вел себя как файл?

Я разрабатываю настольное приложение, которое сохраняет свои проекты на диск. Проекты содержат несколько файлов, таких как jsonи jpgт. д.

Текущее решение: заархивированный файл

Я «сжимаю» их все вместе в один файл . Пример:

filename.project            <- compressed zip
  manifest.json             <- compressed contents
  file1.jpg                 

Идеальное решение: несжатая папка

Мне интересно, можно ли вместо этого выводить несжатые данные в папку и каким-то образом настроить мою ОС для обработки этой папки как одного файла ? Пример:

filename.project            <- folder, but it gets treated like a file
  manifest.json             <- uncompressed contents
  file1.jpg

Определение «Обрабатывается как один файл»:

  • Finder показывает пользовательский значок
  • Двойной щелчок открывает ассоциацию файлов
  • Диалоги "Открыть" могут выбрать этот файл

Другие примеры

На моем Mac есть 2 примера, где это происходит: - Все приложения отображаются в виде .appфайлов, но внутри представляют собой папки, которые я могу просматривать через Терминал - 1Password хранит хранилище паролей в .agilekeychainпапке, которая синхронизируется с Dropbox как папка, но появляется в Finder как один файл.

Ответы (1)

В информации для разработчиков Apple говорится, что да, вы определенно можете создать свой собственный пакет или пакет. Кажется, вы хотите пакет .

Пакет против комплекта обсуждается здесь.

В основном - зарегистрируйте свой пакет в системе, чтобы папки с расширением отображались как пакет, а не как папка (в приложении info.plist должен быть соответствующим образом установлен ключ LSTypeIsPackageдля каждого из типов файлов пакета, которые вам нужно создать). Затем настройте приложение на автоматическое (используя NSFileWrapper) или вручную создание самого пакета при сохранении.

Спасибо, это именно та информация, которую я искал!