2017-02-25 32 views
5

我的Mac應用程序旨在編輯和分析圖形,用戶可以在文件系統的任何位置創建和存儲文件。我去用戶讓他們打開一個以前創建的文件與[NSOpenPanel openPanel]和一個內聯完成處理程序塊。在菜單處理我得到這個控制檯錯誤信息幾次:「在[NSOpenPanel openPanel]調用上無法更新[sic]書籤項目」

2017-02-25 13:42:47.394433 pasteurnet3[32901:1263849] [default] Failed to updated bookmark for item (null) [60AF512E-6072-427D-8624-C406B0EF7D5A] - URL:file:///AirDrop with error Error Domain=NSCocoaErrorDomain Code=260 "The file couldn’t be opened because it doesn’t exist." 

這只是發生在創建NSOpenPanel的,甚至將其發送的beginWithCompletionHandler:消息之前。 FWIW,儘管如此,菜單仍然會在最終請求時出現,允許選擇文件,並且似乎可以正常工作。菜單對象的初始化似乎有很長的延遲。

我很長時間沒有注意到這個應用程序,但消息的外觀顯然歸功於MacOS的改變。我立即懷疑沙箱,但沙箱已關閉的應用程序。如果我打開沙箱並請求「用戶選擇的文件」權利,它似乎沒有任何區別。

沒有什麼特別之處創建對象除了它是一個@try塊內完成:

@try { 
    // Create the File Open Dialog class. 
    openDialog_ = [NSOpenPanel openPanel]; // error occurs here 
} 
@catch (NSException *e){ 
    NSLog(@"innocuous exception(1) in -initForOpenWithDefaultFile:callBackTo:"); 
} 
@catch (NSString *s){ 
    NSLog(@"innocuous exception(2) in -initForOpenWithDefaultFile:callBackTo: \"%@\"", s); 
} 
@catch (...) { 
    NSLog(@"innocuous exception(3) in -initForOpenWithDefaultFile:callBackTo: probably a layout error"); 
} 
@finally { 
    ; 
} 

我沒有做使用書籤事情從程序中也沒有,對於這個問題,有空投。

Xcode 8.2.1,Macbook MacOS 10.12.3。

+0

我在使用Qt的應用程序中看到了這一點,當我升級到Sierra和Qt 5.8時。我曾以爲這是一個Qt問題,但顯然不是。我並沒有聲稱這是一個解決方案,但由於它似乎在尋找名爲AirDrop的頂級目錄,我嘗試了創建一個。這至少擺脫了警告,並嘗試這可能是一個有用的實驗。我一直無法找到爲什麼文件打開對話框可能要查看/ AirDrop的任何解釋,所以我真正在這裏做的是分享一些經驗。 – KeithS

回答

1

對於我來說,「無法更新書籤項(空)」在發佈時已登錄我的應用程序的文件>打開最近菜單中包含的文件,我已經打開,再後來在Finder中刪除的項目。我不知道是否有辦法讓菜單刪除項目,但在運行我的應用程序時,通過選擇文件>打開最近>清除菜單來刪除消息。

我的應用程序不使用NSDocument。我正在使用-noteNewRecentDocumentURL將項目添加到Open Recent。