Позволяет изолированным программным приложениям macOS записывать файл, созданный моим не изолированным приложением - PullRequest
0 голосов
/ 24 января 2019

У меня есть приложение macOS / Objective-C / Cocoa. Мы хотим порождать внешние приложения, такие как TextEdit, для редактирования файлов, созданных этим приложением. Я создаю эти файлы, копируя их в мой каталог ~ / Documents (в конце концов я бы хотел поместить их в другое место, но я пытаюсь упростить) с помощью:

NSFileManager *defaultManager = [NSFileManager defaultManager];
[defaultManager copyItemAtPath:srcPath toPath:destPath error:&err];
NSDate *sourceModified = [self lastModificationOfFile:srcPath];
NSDictionary * attr = @{ NSFileModificationDate : sourceModified,
                         NSFileImmutable : [NSNumber numberWithBool:NO],
                         NSFilePosixPermissions : [NSNumber numberWithUnsignedLong:0666],
                         };
[defaultManager setAttributes:attr ofItemAtPath:destPath error:nil];

Когда я открываю этот файл в TextEdit, заголовок окна говорит «filename.txt - Locked». Редактирование документа дает мне «Вы уверены, что хотите изменить документ на месте?» Диалог. Я выбрал «Перезаписать», но затем попытка сохранения выдает «Документ« filename.txt »не может быть сохранен. У вас нет разрешения.»

Однако при этом файл «filename.txt.sb-a69dcdc5-7V6D2g» (или с аналогичным именем) записывается в папку «Мои документы». И файлы, созданные из оболочки bash с «echo blablabla> filename.txt» в том же каталоге, открываются просто отлично.

Я пробовал много вариантов этих атрибутов. Я не вижу никакой разницы между файлами, которые работают, и теми, которые отображают «... - Заблокировано», используя «ls -la @ filename.txt» или «xattr», даже рядом в одном каталоге.

Очевидно, что я столкнулся с некоторой проблемой песочницы с файлами, которые я создаю, но все мои результаты поиска относятся к другой стороне этой проблемы.

1 Ответ

0 голосов
/ 25 января 2019

Argh.Я нашел это: Почему TextEdit открывает файлы HTML как заблокированные .Очевидно из-за содержимого моего файла .txt, TextEdit интерпретировал его как документ HTML и по-другому относился к нему.Заменено содержимое файла на вещи, которые не похожи на HTML, и теперь я могу редактировать документ.

...