Мое приложение имеет собственный формат, для которого он зарегистрирован в Info.plist как редактор и может читать и записывать в этот формат. Он также может читать ряд других форматов, но не может писать им. Для этих форматов он регистрируется в Info.plist как средство просмотра.Настройка NSDocument для сохранения неродного типа
Когда я открываю один из других форматов, все кажется прекрасным, но когда я прихожу, чтобы сохранить файл, мне NSDocument отправляет сообщение writeToURL:ofType:error:
с URL-адресом загруженного файла и типом в качестве UTI формата I не может писать.
-(NSArray *)writableTypes
возвращает только UTI своего пользовательского формата, а -(BOOL)isNativeType:
возвращает YES только для UTI моего пользовательского формата.
Что бы я хотел сделать, как и другие приложения, которые имеют собственный формат, но могут читать из других форматов, когда пользователь нажимает кнопку «Сохранить», открывается панель сохранения, и пользователь выбирает имя файла, в котором следует сохранять как родной тип.
Это что-то, что NSDocument может сделать сам, или мне нужно проверить в writeToURL:ofType:error:
, чтобы узнать, нужно ли мне вручную открывать панель сохранения?
Спасибо! Это помогло мне. – infobug
Можно также удалить расширение файла в заголовке окна без использования NSArray. Что-то вроде этого: NSString * filenameWithoutExtension = [[url lastPathComponent] stringByDeletingPathExtension]; – infobug
Ответ Правильный способ сделать это, но стоит указать (для тех, кто использует 'readFromData (data: NSData, ofType typeName: String)'), что вы должны 'setDisplayName' ПОСЛЕ установки' fileURL = nil'. – Grimxn