gpt4 book ai didi

objective-c - 设置 NSDocument 以保存非 native 类型

转载 作者:行者123 更新时间:2023-12-03 16:28:40 25 4
gpt4 key购买 nike

我的应用程序有一个自定义格式,它在 Info.plist 中注册为编辑器,并且可以读取和写入该格式。它还可以读取许多其他格式,但无法写入。对于这些格式,它在 Info.plist 中注册为查看器。

当我打开其他格式之一时,一切看起来都很好,但是当我保存文件时,我的 NSDocument 会收到消息 writeToURL:ofType:error: 以及我的文件的 URL已加载,类型为我无法编写的格式的 UTI。

-(NSArray *)writableTypes 仅返回我的自定义格式的 UTI,而 -(BOOL)isNativeType: 仅针对我的自定义格式的 UTI 返回 YES。

我想做的是,像其他具有 native 格式但可以从其他格式读取的应用程序一样,当用户按“保存”时,保存面板将打开,用户选择一个文件名来保存为原生类型。

这是 NSDocument 自己可以做的事情,还是我需要检查 writeToURL:ofType:error: 以查看是否需要手动打开保存面板?

最佳答案

回答我自己,我发现似乎有效的解决方案是在 readFromURL:ofType:error: 中重置 NSDocument 的 fileURL、displayName 和 fileType 为非- native 格式。

- (BOOL)readFromURL:(NSURL *)url ofType:(NSString *)type error:(NSError **)error
{
// Handle loading as normal

if (![type isEqualToString:kMyNativeType]) {
[self setFileType:kMyNativeType];
[self setFileURL:nil];

// Without this, all non-native files are displayed as Untitled.
// This sets the window title as the filename without the extension
NSArray *filenameComponents = [[url lastPathComponent] componentsSeparatedByString:@"."];
[self setDisplayName:filenameComponents[0]];
}

return YES;
}

我不知道这是否是正确的方法,但它似乎适合我目前想要的,并且似乎是 https://developer.apple.com/library/mac/documentation/DataManagement/Conceptual/DocBasedAppProgrammingGuideForOSX/AdvancedTopics/AdvancedTopics.html#//apple_ref/doc/uid/TP40011179-CH7-SW8 中建议的方法。

关于objective-c - 设置 NSDocument 以保存非 native 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20747047/

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