gpt4 book ai didi

cocoa - 如何在 Cocoa 中创建仅导入文档类型?

转载 作者:行者123 更新时间:2023-12-03 16:08:14 27 4
gpt4 key购买 nike

我的应用程序导入但未保存一种文件类型。我已向文档类型添加了一个条目并将其设置为只读,但这并没有产生我正在寻找的导入行为。相反,我的应用程序只会打开该文件,当我保存时,原始文件将以我自己的文件格式覆盖。

如何设置我的文档或文档类型,以便使用原始文档中的数据创建新文档,而不是打开原始文档?

最佳答案

1。将文件类型声明为文档类型

在您的 Xcode 项目中,为您的应用程序支持的所有文件格式添加文档类型。根据您的应用程序的功能设置每种类型的角色:

  • 将具有读/写功能的文件类型标记为编辑器
  • 将仅导入的文件类型标记为查看器

类别设置为您要处理每种文件类型的文档类型。一个文档类可以处理多种文件类型。

在下面的示例中,声明了三种文件类型:font-peSTLe、otf 和 ttf。第一个是 font-peSTLe,是应用程序的 native 格式。此类型具有编辑器角色。

剩下的两种格式,otf和ttf,可以导入,但不能由应用程序写入;因此他们被标记为查看者

Example Document Types

2。 NSDocument 子类中的其他文件类型

添加文档类型后,应用程序将自动允许用户打开指定类型的文件。

您需要将文件类型处理代码添加到文档类中。在理想情况下,将分支代码添加到 readFromData:ofType:error: 方法中:

- (BOOL)readFromData:(NSData*)someData ofType:(NSString*)typeName error:(NSError**)outError
{
if ([NSWorkspace.sharedWorkspace type:@"eu.miln.font-pestle" conformsToType:typeName] == YES)
{
// read native format
}
else if ([NSWorkspace.sharedWorkspace type:@"public.opentype-font" conformsToType:typeName] == YES)
{
// read import only format

// disassociate document from file; makes document "untitled"
self.fileURL = nil;
// associate with primary file type
self.fileType = @"eu.miln.font-pestle";

}
else // ...

}

self.fileURL = nil; 很重要。通过将 fileURL 设置为 nil,您表示该文档不与任何磁盘上的文件关联,应被视为新文档。

要允许自动保存,请实现 NSDocument 方法 auto savingFileType 以返回主要文件类型。

关于cocoa - 如何在 Cocoa 中创建仅导入文档类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/979647/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com