为什么不在缓存目录中创建临时目录?

时间:2013-10-28 20:45:45

标签: ios cocoa-touch nsfilemanager

我可能错过了一些非常明显的东西,但是:

NSError *error;
NSURL *cachesDirectory = [[NSFileManager defaultManager] URLsForDirectory:NSCachesDirectory inDomains:NSUserDomainMask][0];
NSLog(@"Caches directory: %@", cachesDirectory);
NSURL *tmpDirectory = [[NSFileManager defaultManager] URLForDirectory:NSItemReplacementDirectory inDomain:NSUserDomainMask appropriateForURL:cachesDirectory create:YES error:&error];
NSLog(@"TMP directory: %@", tmpDirectory);

// Result:
// 2013-10-28 13:37:47.972 MyApp[220:907] Caches directory: file://localhost/var/mobile/Applications/029A4948-A67A-48E5-A35F-1BBCC744E9B0/Library/Caches/
// 2013-10-28 13:37:47.976 MyApp[220:907] TMP directory: file://localhost/var/mobile/Applications/029A4948-A67A-48E5-A35F-1BBCC744E9B0/Library/(A%20Document%20Being%20Saved%20By%20MyApp%2011)/

我希望在caches目录中创建我的临时目录。来自文档:

  

您还可以使用此方法创建一个新的临时目录,用于存储自动保存文件等内容;为此,请为目录参数指定NSItemReplacementDirectory,为domain参数指定NSUserDomainMask,为url参数指定有效的父目录。找到(或创建)所需目录后,此方法将返回该目录的URL。

此外,url的定义:

  

要在其中创建用于自动保存文档或其他一些用途的唯一临时目录的目录的名称。除非directory参数包含值NSItemReplacementDirectory且domain参数包含值NSUserDomainMask,否则将忽略此参数。创建临时目录时,将忽略shouldCreate参数,并始终创建目录。

您可以看到我的临时目录是在Library内创建的。我做错了什么?

1 个答案:

答案 0 :(得分:1)

看起来你没有做错任何事。我刚测试它,发现它的行为与你描述的方式相同。行为不符合文档或文档不正确。我也碰巧找到以下链接,人们在讨论完全相同的问题:

http://lists.apple.com/archives/cocoa-dev/2012/Feb/msg00197.html