2015-11-03 23 views
0

我正在實現NSApplicationDelegate的應用程序:openFiles,以獲得特定文檔的一些自定義行爲。 雖然對於一些文檔,我想要默認行爲(只是打開並顯示它們)。所以排序我呼籲每個文檔的文件後:NSDocumentController openDocumentWithContentsOfURL:display:completionHandler:failed

[[NSDocumentController sharedDocumentController] openDocumentWithContentsOfURL:[NSURL URLWithString:camDoc] display:YES completionHandler:^(NSDocument *document, BOOL alreadyOpen, NSError *error){ 
    NSLog(@"%@",document); 
}]; 

在控制檯中記錄以下錯誤:

*** setObjectForKey: key cannot be nil 

完成處理程序不會被調用。如果我註釋掉完整的openFiles方法,那麼文檔打開的很好,所以看起來NSDocument類是正確實現的。

我試着暫時關閉Sandboxing,因爲委託方法收到NSStrings而不是URL,所以我期望這可能是問題所在。這沒有幫助。

這裏怎麼回事?

紅利問題:如何獲取應用程序(來自Finder)打開的安全範圍URL?

回答

0

原來的問題是由於NSURL的創建方式。當然應該使用fileURL方法。

+0

你能解釋一下你的意思嗎? – stone

+0

我使用了'URLWithString',而這應該是'fileURLWithPath'。 –

+0

這條語句在Swift中看起來像什麼? – johnrubythecat

相關問題