У меня есть приложение 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», даже рядом в одном каталоге.
Очевидно, что я столкнулся с некоторой проблемой песочницы с файлами, которые я создаю, но все мои результаты поиска относятся к другой стороне этой проблемы.