NSDocumentController openDocumentWithContentsOfURL:display:completionHandler: 失败
NSDocumentController openDocumentWithContentsOfURL:display:completionHandler: fails
我正在实施 NSApplicationDelegate 的 application:openFiles 以获得特定文档的一些自定义行为。
但是对于某些文档,我想要默认行为(只是打开并显示它们)。因此,在对文档进行排序后,我为每个文档调用:
[[NSDocumentController sharedDocumentController] openDocumentWithContentsOfURL:[NSURL URLWithString:camDoc] display:YES completionHandler:^(NSDocument *document, BOOL alreadyOpen, NSError *error){
NSLog(@"%@",document);
}];
在控制台中记录了以下错误:
*** setObjectForKey: key cannot be nil
从未调用完成处理程序。如果我注释掉完整的 openFiles 方法,那么文档可以正常打开,所以 NSDocument class 似乎已正确实现。
我尝试暂时关闭沙盒,因为委托方法接收的是 NSString 而不是 URL,所以我预计这可能是问题所在。那没有帮助。
这里出了什么问题?
额外问题:如何让应用程序(从 Finder)打开安全范围 URL?
原来问题出在 NSURL 的创建方式上。那当然应该使用 fileURL 方法。
我正在实施 NSApplicationDelegate 的 application:openFiles 以获得特定文档的一些自定义行为。 但是对于某些文档,我想要默认行为(只是打开并显示它们)。因此,在对文档进行排序后,我为每个文档调用:
[[NSDocumentController sharedDocumentController] openDocumentWithContentsOfURL:[NSURL URLWithString:camDoc] display:YES completionHandler:^(NSDocument *document, BOOL alreadyOpen, NSError *error){
NSLog(@"%@",document);
}];
在控制台中记录了以下错误:
*** setObjectForKey: key cannot be nil
从未调用完成处理程序。如果我注释掉完整的 openFiles 方法,那么文档可以正常打开,所以 NSDocument class 似乎已正确实现。
我尝试暂时关闭沙盒,因为委托方法接收的是 NSString 而不是 URL,所以我预计这可能是问题所在。那没有帮助。
这里出了什么问题?
额外问题:如何让应用程序(从 Finder)打开安全范围 URL?
原来问题出在 NSURL 的创建方式上。那当然应该使用 fileURL 方法。