2012-03-21 64 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)