Я разрабатываю приложение, которое в настоящее время находится в песочнице.Он действует как основной текстовый редактор.Недавно я хотел проверить, что происходит, когда я одновременно открываю файл в своем приложении и другом приложении, обновляю одно приложение, а затем вижу обновленное в другом.Я использую Coda
или BBEdit
в качестве альтернативных редакторов.Если я отключу песочницу - то этой проблемы не существует.Однако, поскольку приложения должны быть помещены в «песочницу» с 1 марта, я предпочел бы реализовать решение, а не ждать и видеть.
Когда я открываю оба файла и редактирую в своем приложении, а затем переключаюсь на другоеприложение, изменения отражаются так, что эти редакторы имеют версию, только что сохраненную из моего приложения.Однако, если я выполняю обратное сохранение от их приложения и затем перехожу к моему - не радость.Без выполнения каких-либо действий консоль сообщает о двух конкретных ошибках: deny file-issue-extension
и deny file-write-data
.Приложение, похоже, теряет привилегии на редактирование документа, так как оно было изменено внешним редактором после того, как документ был открыт в моем приложении.Если я пытаюсь сохранить файл в своем приложении, он просит дублировать документ, поскольку он потерял доступ к исходному документу.Это не происходит наоборот, потому что эти приложения не были помещены в «песочницу» и поэтому имеют разрешения, которых нет у моего приложения.Также не похоже, что вы можете помешать другому приложению вносить изменения, если вы не хотите, чтобы это происходило.
В документации на developer.apple.com ничего не говорится о ситуациях такого типа.Я не уверен, является ли это предполагаемым поведением.Если это так, то я могу просто сказать моему пользователю, что права доступа к документу потеряны, и ему следует либо сохранить новую версию, либо заново открыть файл.Если это НЕ намеченное поведение, то какой метод в NSDocument API предоставит разрешение файлу после его потери?Я предполагаю, что ответ - первый, что это предназначено, но может кто-нибудь подтвердить и есть ли документация?