如何禁用自動重新打開最後一個文檔?如何禁用自動重新打開最後一個文檔?
當我執行我的應用程序,它會調用方法readFromData
。
但問題是,在我的版本1和我的版本2之間,我更改了應用程序保存的數據結構。在v1中,根對象是一個數組。在v2中,根對象是一個帶有兩個鍵的字典,一個用於字符串,另一個用於數組。
當應用程序加載時,它似乎從數據中加載一個數組,然後嘗試從該數組中獲取一個用於該詞典的鍵的對象。
我該怎麼做!! ??
PS:我試圖創建一個NSApplicationDelegate與
-(BOOL)applicationShouldOpenUntitledFile:(NSApplication*)app
{
return YES;
}
- (BOOL)applicationOpenUntitledFile:(NSApplication *)sender
{
return YES ;
}
但這些方法永遠不會被我的應用程序調用。
編輯:
這裏是調用堆棧:
0 CoreFoundation 0x00007fff8bc06f56 __exceptionPreprocess + 198
1 libobjc.A.dylib 0x00007fff81f37d5e objc_exception_throw + 43
2 CoreFoundation 0x00007fff8bc931be -[NSObject doesNotRecognizeSelector:] + 190
3 CoreFoundation 0x00007fff8bbf3e23 ___forwarding___ + 371
4 CoreFoundation 0x00007fff8bbf3c38 _CF_forwarding_prep_0 + 232
5 dictionnaireDouchoutique 0x0000000100007f22 -[Document readFromData:ofType:error:] + 498
6 AppKit 0x00007fff89af3558 -[NSDocument readFromURL:ofType:error:] + 665
7 AppKit 0x00007fff8999198c -[NSDocument _initForURL:withContentsOfURL:ofType:error:] + 151
8 AppKit 0x00007fff89991890 -[NSDocument initForURL:withContentsOfURL:ofType:error:] + 360
9 AppKit 0x00007fff89991677 -[NSDocumentController makeDocumentForURL:withContentsOfURL:ofType:error:] + 199
10 AppKit 0x00007fff8999150f __-[NSDocumentController reopenDocumentForURL:withContentsOfURL:display:completionHandler:]_block_invoke_5 + 150
11 AppKit 0x00007fff89991467 __-[NSDocumentController reopenDocumentForURL:withContentsOfURL:display:completionHandler:]_block_invoke_4 + 697
12 AppKit 0x00007fff899911a9 -[NSDocumentController _openDocumentWithContentsOfURL:usingProcedure:] + 530
13 AppKit 0x00007fff89990d95 __-[NSDocumentController reopenDocumentForURL:withContentsOfURL:display:completionHandler:]_block_invoke_3 + 242
14 libdispatch.dylib 0x00007fff86329a82 _dispatch_call_block_and_release + 18
15 libdispatch.dylib 0x00007fff8632b8f2 _dispatch_main_queue_callback_4CF + 308
16 CoreFoundation 0x00007fff8bb9be7c __CFRunLoopRun + 1724
17 CoreFoundation 0x00007fff8bb9b486 CFRunLoopRunSpecific + 230
18 HIToolbox 0x00007fff87d652bf RunCurrentEventLoopInMode + 277
19 HIToolbox 0x00007fff87d6c56d ReceiveNextEventCommon + 355
20 HIToolbox 0x00007fff87d6c3fa BlockUntilNextEventMatchingListInMode + 62
21 AppKit 0x00007fff8973d779 _DPSNextEvent + 659
22 AppKit 0x00007fff8973d07d -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 135
23 AppKit 0x00007fff897399b9 -[NSApplication run] + 470
24 AppKit 0x00007fff899b5eac NSApplicationMain + 867
25 dictionnaireDouchoutique 0x00000001000075d2 main + 34
26 dictionnaireDouchoutique 0x0000000100001984 start + 52
爲什麼應用程序委託中的這些方法與該問題有關?他們處理新文件的創建,而不是打開現有文件。順便說一下,你的'applicationOpenUntitledFile:'實際上並沒有打開一個無標題的文件,這就是你應該在那裏做的。相反,像UNIX的'true'命令的GNU版本,你什麼也不做,成功。 –
我認爲問題在於我的應用程序試圖打開最後一個文檔,因此請嘗試處理不良數據。所以,我的想法是告訴應用程序不要嘗試打開最後一個文檔。 – Colas
那些方法不這樣做。他們是積極的「你應該這樣做」和「現在做」,而不是消極的「你不應該做我們的方法名稱沒有提及的其他事情」。 –