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 方法。