Mac OS 中NSSavePanel以及NSOpenPanel的使用

Mac OS開啓沙盒之後,文件的保存會涉及到一個權限問題。如下圖,在Capabilities中,可以勾選的權限一共有5種。

NSSavePanel

最近需要保存文檔到本地,因爲不是Pictures、Music或者Movies,不能使用這幾個權限,因此使用NSSavePanel讓用戶自定義保存路徑。以下是代碼

複製代碼
 1     NSSavePanel*    panel = [NSSavePanel savePanel];
 2     [panel setNameFieldStringValue:@"Untitle.onecodego"];
 3     [panel setMessage:@"Choose the path to save the document"];
 4     [panel setAllowsOtherFileTypes:YES];
 5     [panel setAllowedFileTypes:@[@"onecodego"]];
 6     [panel setExtensionHidden:YES];
 7     [panel setCanCreateDirectories:YES];
 8     [panel beginSheetModalForWindow:self.window completionHandler:^(NSInteger result){
 9         if (result == NSFileHandlingPanelOKButton)
10         {
11             NSString *path = [[panel URL] path];
12             [@"onecodego" writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil];
13         }
14     }];
複製代碼

-1 第2行代碼是設置默認的文件名

-2 第3行代碼是設置提示信息

-3 第5行代碼是設置允許的文件類型

-4 第6行代碼是隱藏擴展名

-5 第7行代碼是設置可以創建文件

-6 第8 - 14行代碼是運行窗口

-7 第9行代碼是判斷用戶點擊的是不是OK按鈕(默認title好像是Save)

-8 第11行代碼是取出用戶選擇保存的路徑

需要注意的是設置文件名的時候需要帶上擴展名(如示例中第2行),需要設置允許的文件類型(如示例中第5行),並設置隱藏擴展名(如示例中第6行)以及可創建文件(如示例中第7行)。設置這幾個屬性之後,運行示例代碼:

此時修改文檔名字(如修改爲onecodego),選擇保存路徑爲Documents,點擊save。

打開Finder,在Documents中就可以找到onecodego.onecodego。

需要注意的是這樣保存的文檔只能在當此打開的時候讀寫,也就是說當退出軟件或者重啓電腦對該路徑文件的讀寫權限就沒有了。

NSOpenPanel

使用NSOpenPanel打開用戶選擇的文件

複製代碼
 1     NSOpenPanel *panel = [NSOpenPanel openPanel];
 2     [panel setDirectory:NSHomeDirectory()]; 
 3     [panel setAllowsMultipleSelection:NO];
 4     [panel setCanChooseDirectories:YES]; 
 5     [panel setCanChooseFiles:YES];
 6     [panel setAllowedFileTypes:@[@"onecodego"]];
 7     [panel setAllowsOtherFileTypes:YES];
 8     if ([panel runModal] == NSOKButton) {
 9         NSString *path = [panel.URLs.firstObject path];
10         //code
11     }
複製代碼

-1 第2行代碼是設置默認的路徑

-2 第3行代碼是設置不允許多選

-3 第4行代碼是設置可以打開文件夾

-4 第5行代碼是設置可以選中文件

-5 第6行代碼是設置可以打開的文件類型

-6 第8行代碼是判斷用戶選中的是不是OK按鈕

-7 第9行取出用戶選中的路徑

需要注意的是需要設置允許的文件類型,如示例允許的文件類型爲onecodego,因此在NSOpenPanel中只能打開後綴爲onecodego的文件,如下圖:

 


發佈了20 篇原創文章 · 獲贊 4 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章