2012-03-21 63 views
4

我的工作我的沙盒應用和因爲我使用一個庫中創建臨時文件我有一個問題,當修改原始文件,例如Mac的沙箱和臨時文件

當它改變了「你好World.txt」它會在同一目錄下創建一個「Hello World_temp.txt」文件,然後當它完成了它會掉這兩個文件的東西。

當然休息沙箱規則,因爲你只被允許更改源文件,而不是到處去該文件夾中創建其他文件的這種情況。

我無法找到有關如何處理臨時文件做的任何建議,所以我目前只是要建立在那裏我可以寫,然後交換文件在應用程序的容器中的臨時文件。但是,如果應用程序和文件位於不同的磁盤上,這並不好,因爲它將涉及複製而不是移動。

有沒有爲我們允許寫入臨時文件的地方嗎?

最好的問候,

弗蘭克

回答

8

在10.7.3+(也適用出去10.6沙箱)嘗試NSFileManager方法URLForDirectory:inDomain:appropriateForURL:create:error:(docs)。這應該給你一個特定捲上的臨時目錄。創建後,您可以使用replaceItemAtURL:withItemAtURL:backupItemName:options:resultingItemURL:error:來切換文件。

現在一些不確定性:

在10.7 - > 10.7.2以上方法可能不能在沙箱中運行。相反,您可以使用功能NSTemporaryDirectory()(docs)。你可能發現replaceItemAtUrl...在這種情況下在沙箱下也不起作用,在這種情況下寫你自己的代碼來讀/寫臨時的回來。

1

NSTemporaryDirectory()在沙箱中工作。在斯威夫特示例代碼:

let path = "\(NSTemporaryDirectory())temp.txt" 
"Hello world".writeToFile(path, atomically: false, encoding: NSUTF8StringEncoding, error: nil)