允许的应用程序文件位置 - 使用或不使用沙盒

时间:2013-02-12 01:59:37

标签: macos cocoa sandbox

好的,我的问题很简单,但我绝对找不到一个直截了当的答案。所以,如果你能提供帮助,我会很高兴。

我想要的是什么:

一个地方(在10.6上 - 没有沙盒 - 或者10.7以后,有沙盒)我的应用程序可以自由地写一些数据。

用几句话说:

  • 我想知道是否有任何系统功能(例如NSHomeDirectory())指向我写入的安全位置(OS X版本无关紧要)。

1 个答案:

答案 0 :(得分:0)

好的,我在这里,回答我自己的问题。

那么,如果我们只需要访问 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条评论,了解修复此答案,以获得更优雅的解决方案。