我開發當前沙箱的應用程序。它充當基本的文本編輯器。最近,我想測試在我的應用程序和另一個應用程序中同時打開文件時發生的情況,在一個應用程序中進行更新,然後在另一個應用程序中查看更新。我正在使用Coda
或BBEdit
作爲我的替代編輯。如果我關閉沙盒 - 那麼這個問題不存在。但是,由於應用程序需要在3月1日之前進行沙盒處理,因此我寧願實施解決方案而不是等待和看。Mac的沙盒應用程序丟失文件權限設置爲其他應用程序
當我打開這兩個文件,並進行編輯在我的應用程序,然後切換到其他應用程序,這些變化都反映,使那些編輯們的版本剛剛從我的應用程序保存。但是,如果我從他們的應用程序中進行挽救,然後轉移到我的應用程序 - 沒有喜悅。如果不執行任何操作,控制檯會報告兩個特定錯誤:deny file-issue-extension
和deny file-write-data
。該應用程序似乎失去了編輯文檔的權限,因爲文檔在我的應用程序中打開後,由外部編輯器更改。如果我嘗試將文件保存在我的應用程序中,它會要求複製文檔,因爲它無法訪問原始文檔。這種情況不會發生,因爲這些應用程序尚未被沙箱化,因此具有我的應用程序沒有的權限。如果您不想要這種行爲,也不會出現您可以阻止其他應用程序進行更改。
上developer.apple.com的文件沒有提及這種情況的。我不確定這是否是有意的行爲。如果是這樣,那麼我可以告訴我的用戶文檔權限已經丟失,他們應該保存新版本或重新打開文件。如果它不是預期的行爲,那麼NSDocument API中的哪個方法會在文件丟失後授予文件許可權?我假設答案是前者,這是有意的,但任何人都可以證實,並有文件?
我最終編碼解決了這個問題。如果應用程序失去對該文件的許可,那麼我告訴用戶將我的文檔保存爲新文件或關閉。但是,似乎一個應用程序不應該能夠從另一個應用程序「竊取」權限。我想這是你爲沙盒支付的價格。 – 2012-01-13 14:20:49
我發現蘋果的默認消息,該文件是在應用程序之外編輯的。看起來像這是打算。 – 2012-01-13 15:58:01
請提供雷達(也可以在[OpenRadar](http://openradar.appspot.com/)上記錄它) - 沙盒目前存在許多問題,並且蘋果獲得的錯誤報告越多,越有可能他們將修復/推遲/收回沙箱。 – fzwo 2012-01-16 17:53:39