アプリケーションフォルダやドキュメントフォルダ等を取得する

アプリケーションフォルダやドキュメントフォルダ等を取得するAPIにNSSearchPathForDirectoriesInDomainsというのがあるのですが、その挙動を調べるプログラムを作って見ました。
このAPIは求めたいフォルダと検索範囲(ドメイン)を指定して該当するフォルダの配列を返してくれます。
このプログラムはフォルダ指定とドメイン指定の組み合わせでどういう結果が出るかを調べます。

画面は以下の通りです。コンボボックスでフォルダとドメインを指定し、結果をNSTextViewに表示します。

コードは以下の通りです。

SearchPathForDirectoriesAppDelegate.h
#import <Cocoa/Cocoa.h>

@interface SearchPathForDirectoriesAppDelegate : NSObject <NSApplicationDelegate> {
    NSWindow *window;
	NSTextView *outTxtView;
	NSComboBox *outCmbPath;
	NSComboBox *outCmbDomain;
}

@property (assign) IBOutlet NSWindow *window;
@property (assign) IBOutlet NSTextView *outTxtView;
@property (assign) IBOutlet NSComboBox *outCmbPath;
@property (assign) IBOutlet NSComboBox *outCmbDomain;

- (IBAction)onCmbPath:(id)sender;
- (IBAction)onCmbDomain:(id)sender;

- (void)showResult;

@end

SearchPathForDirectoriesAppDelegate.m
#import "SearchPathForDirectoriesAppDelegate.h"

@implementation SearchPathForDirectoriesAppDelegate

@synthesize window;
@synthesize outTxtView;
@synthesize outCmbPath;
@synthesize outCmbDomain;

static NSSearchPathDomainMask	g_nDomainMask[] = {
										NSUserDomainMask,
										NSLocalDomainMask,
										NSNetworkDomainMask,
										NSSystemDomainMask,
										NSAllDomainsMask
									};

static NSSearchPathDirectory	g_nSrchPath[] = {
										NSApplicationDirectory,
										NSDemoApplicationDirectory,
										NSDeveloperApplicationDirectory,
										NSAdminApplicationDirectory,
										NSLibraryDirectory,
										NSDeveloperDirectory,
										NSUserDirectory,
										NSDocumentationDirectory,
										NSDocumentDirectory,
										NSCoreServiceDirectory,
										NSAutosavedInformationDirectory,
										NSDesktopDirectory,
										NSCachesDirectory,
										NSApplicationSupportDirectory,
										NSDownloadsDirectory,
										NSInputMethodsDirectory,
										NSMoviesDirectory,
										NSMusicDirectory,
										NSPicturesDirectory,
										NSPrinterDescriptionDirectory,
										NSSharedPublicDirectory,
										NSPreferencePanesDirectory,
										NSItemReplacementDirectory,
										NSAllApplicationsDirectory,
										NSAllLibrariesDirectory
									};


- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
	// Insert code here to initialize your application 
	[outCmbPath selectItemAtIndex:0];
	[outCmbDomain selectItemAtIndex:0];
	[outTxtView setEditable:NO];
	[self showResult];
}

- (IBAction)onCmbPath:(id)sender
{
	[self showResult];
}

- (IBAction)onCmbDomain:(id)sender
{
	[self showResult];
}

- (void)showResult
{
	NSSearchPathDirectory	nSrchPath = g_nSrchPath[[outCmbPath indexOfSelectedItem]];
	NSSearchPathDomainMask	nDomainMask = g_nDomainMask[[outCmbDomain indexOfSelectedItem]];

	NSArray *arrPaths = NSSearchPathForDirectoriesInDomains(nSrchPath, nDomainMask, YES);

	[outTxtView setString:[NSString stringWithFormat:@"%@", arrPaths]];
}


@end

サンプルプログラムのダウンロード(33KB)

【作成・確認環境】
MacOS X v10.6.4
Xcode v3.2.3

一覧に戻る