2014-04-03 22 views
-1

我的程序處理一個目錄中的文件,然後在這個目錄下創建另一個文件。如果你沒有打開沙盒,結果是正確的,如果我打開沙盒,那麼創建一個文件將失敗。但我見過有些人可以做到。誰能告訴我該怎麼做?我想問一下沙箱。不能創建文件?

+0

https://developer.apple.com/library/mac/documentation/security/conceptual/AppSandboxDesignGuide/AppSandboxInDepth/AppSandboxInDepth.html – VenoMKO

回答

0

沙盒的核心目的是阻止應用程序在未經用戶許可的情況下讀取或寫入文件。這裏有三種獲得寫入文件權限的方法:

A)如果你的應用程序被設計爲處理目錄中的所有文件,讀入現有文件並寫出新文件,然後使用NSOpenPanel讓用戶選擇目錄。這將授予您的應用程序讀/寫/創建到該目錄。用戶將看到一個詢問目錄的對話框。

B)如果正在處理由用戶選擇的文件,然後,以產生具有相同名稱的文件,在相同目錄,但具有不同文件擴展名(例如,其將應用文件從一種格式轉換爲另一種格式),那麼您可以使用沙盒的功能相關項目。這要求您在應用程序中列出兩個文件擴展名Info.plist,向這些Info.plist條目添加一個布爾型NSIsRelatedItemType標誌,並使用NSFileCoordinator & NSFilePresenter類 - 基於標準文檔的應用程序會自動執行這些類。用戶將看到一個詢問源文件的對話框。

C)你是在處理文件,並用不同的或在不同目錄生成另一個。您需要使用NSOpenPanel來訪問該文件並使用NSSavePanel來獲得寫入結果的權限。用戶將看到兩個對話框。

Apple在App Sandbox Design Guide提供了一個概述。

HTH

+0

謝謝答覆,你給開需要三種方法保存對話框,程序不符合,我想要的效果是: 在查找器中選擇文件,然後彈出上下文菜單。在菜單中選擇我的應用程序。然後創建一個新文件。 例如,在查找器中選擇一個rar文件,右鍵彈出上下文菜單選擇提取到當前目錄。 像這樣https://itunes.apple.com/cn/app/mini-unrar/id641146824?l=en&mt=12 – user3494251