Sij*_*der 6 cocoa document-based
有一个文件类型我的应用程序导入但不保存.我已经在文档类型中添加了一个条目并将其设置为只读,但这不会产生我正在寻找的导入行为.相反,我的应用程序将只打开文件,当我保存原始文件时,将以我自己的文件格式覆盖.
如何设置我的文档或文档类型,以便使用原始文档中的数据创建新文档,而不是打开原始文档?
Gra*_*iln 13
在Xcode项目中,为应用程序支持的所有文件格式添加文档类型.根据应用程序的能力设置每种类型的角色:
将Class设置为要处理每种文件类型的文档类型.一个文档类可以处理多种文件类型.
在下面的示例中,声明了三种文件类型:font-pestle,otf和ttf.第一个是font-pestle,是应用程序的原生格式.此类型具有角色编辑器.
其余两种格式otf和ttf可以导入但不能由应用程序写入; 因此它们被标记为查看者.

添加文档类型后,应用程序将自动允许用户打开指定类型的文件.
您需要将文件类型处理代码添加到文档类.在理想情况下,将分支代码添加到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 // ...
}
Run Code Online (Sandbox Code Playgroud)
这self.fileURL = nil;很重要.通过将fileURL设置为nil,您说该文档与任何磁盘文件都没有关联,应该被视为新文档.
要允许自动保存,请实现NSDocument方法autosavingFileType以返回主文件类型.
| 归档时间: |
|
| 查看次数: |
1800 次 |
| 最近记录: |