好的,我的问题很直截了当,但我绝对找不到一个直截了当的答案。所以,如果你能提供帮助,我会很高兴。
我想要的是 :
我的应用程序可以自由写入一些数据的地方(在 10.6 上 - 没有沙箱 - 或 10.7 及更高版本,有沙箱)。
简单来说 :
- 我想知道是否有任何系统函数(例如
NSHomeDirectory()
)指向我可以写入的安全位置(OS X 版本无关紧要)。
好的,所以我在这里,回答我自己的问题。
那么,如果我们只需要访问Application Support目录(如果它不存在则创建它),不管我们是在 10.6(未启用沙盒)还是 10.7+ 上怎么办?
这是通用解决方案(我自己为此写了一个类别NSFileManager
,但即使是简单的函数或宏也可以......):
界面 :
// NSFileManager+Paths.h
#import <Foundation/Foundation.h>
@interface NSFileManager (Paths)
+ (NSString*)applicationSupportDirectory;
@end
执行 :
// NSFileManager+Paths.m
#import "NSFileManager+Paths.h"
@implementation NSFileManager (Paths)
+ (NSString*)applicationSupportDirectory
{
NSError *error;
return [[[NSFileManager defaultManager] URLForDirectory:NSApplicationSupportDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:YES error:&error] path];
}
@end
比较简单吧?
提示:请查看下面的 2 条评论,以修复此答案以获得更优雅的解决方案。