当前位置:  开发笔记 > IOS > 正文

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

如何解决《如何在Cocoa中创建仅导入文档类型?》经验,为你挑选了1个好方法。

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

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



1> Graham Miln..:

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

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

将具有读/写功能的文件类型标记为编辑器 ;

标记仅将文件类型导入为Viewer.

Class设置为要处理每种文件类型的文档类型.一个文档类可以处理多种文件类型.

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

其余两种格式otf和ttf可以导入但不能由应用程序写入; 因此它们被标记为查看者.

示例文档类型

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方法autosavingFileType以返回主文件类型.

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有