我正在编写一个基于文档的OSX应用程序。我最近发现,使用Duplicate会使我的应用程序崩溃,调试器会在本机程序集中停止。
我有一个NSDocument子类覆盖这些:
- (NSData *)dataRepresentationOfType:(NSString *)typeName
- (BOOL)readFromFileWrapper:(NSFileWrapper *)fileWrapper
ofType:(NSString *)typeName
error:(NSError **)outError
我可以保存和打开,如果我在文件菜单中添加另存为,我甚至可以另存为。
如果我这样做…
- (NSDocument *)duplicateAndReturnError:(NSError **)outError
{
return [[Document alloc] init];
}
…它不再崩溃,但"复制"然后什么也不做,没有动画,没有新窗口,什么都不做。
对不起,我知道没什么好说的,但我不知道如何调试它。欢迎提出任何建议。
尽管最初的海报已经说明了这一点,但要让未来阅读本文的人清楚:您应该实现三个read
方法中的一个和匹配的write
方法。
例如,从以下三个选项中选择要实现的方法集:
//有了这对,你就可以自己负责读写所有内容,你的磁盘格式可以是任何格式open func read(来自url:url,类型名称:String(throwsopen func write(到url:url,类型名称:字符串(抛出
//使用这两个文件包,您可以处理一个FileWrapper,如果您的文件格式是捆绑包(带有扩展名的文件夹(,它会让您的生活变得更轻松open func read(来自fileWrapper:fileWrapper,类型名称:String(throwsopen func fileWrapper(类型typeName:String(抛出->FileWrapper
//有了这对,你只需要读写一个平面二进制文件open func read(from data:data,Type typeName:String(throwsopen func数据(类型typeName:String(抛出->数据