[Objective-C]NSSearchPathForDirectoriesInDomains と チルダ

NSSearchPathForDirectoriesInDomainsで各種ディレクトリのパスを取得可能だけど第3引数にチルダがどうこうってのがある…


チルダ(~)って何だ?

  NSArray *yes, *no;

  yes = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                            NSUserDomainMask,
                                            YES);
  no  = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                            NSUserDomainMask,
                                            NO);
  NSLog(@"%@%@", yes, no);

  yes = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,
                                            NSUserDomainMask,
                                            YES);
  no  = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,
                                            NSUserDomainMask,
                                            NO);
  NSLog(@"%@%@", yes, no);

  yes = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory,
                                            NSUserDomainMask,
                                            YES);
  no  = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory,
                                            NSUserDomainMask,
                                            NO);
  NSLog(@"%@%@", yes, no);

上記のソースを iPhoneシミュレータで実行すると 下記のようなログが出る。

(
    "/Users/fernweh8000/Library/Application Support/iPhone Simulator/6.0/Applications/37FFFB6E-CC33-49AB-999C-7777DDDDF9E4/Documents"
)(
    "~/Documents"
)
(
    "/Users/fernweh8000/Library/Application Support/iPhone Simulator/6.0/Applications/37FFFB6E-CC33-49AB-999C-7777DDDDF9E4/Library"
)(
    "~/Library"
)
(
    "/Users/fernweh8000/Library/Application Support/iPhone Simulator/6.0/Applications/37FFFB6E-CC33-49AB-999C-7777DDDDF9E4/Library/Application Support"
)(
    "~/Library/Application Support"
)

実機の場合は下記のように

 (
    "/var/mobile/Applications/2C8C22D-01F8-99B2-99AE-B392A9A1E4BF/Documents"
)(
    "~/Documents"
)
2013-01-16 20:47:31.159 ARCTest[6183:907] (
    "/var/mobile/Applications/2C8C22D-01F8-99B2-99AE-B392A9A1E4BF/Library"
)(
    "~/Library"
)
2013-01-16 20:47:31.161 ARCTest[6183:907] (
    "/var/mobile/Applications/2C8C22D-01F8-99B2-99AE-B392A9A1E4BF/Library/Application Support"
)(
    "~/Library/Application Support"
)

NUSearchPathForDirectoriesInDomainsの第三引数は チルダ を展開するかどうかを指定する。
チルダはユーザーディレクトリ のエイリアスっぽいものになっている。

実際のプログラムでファイルを保存したりする場合はチルダは展開して使用すること。

ちなみにチルダが何に展開されるか知りたければ
[@"~" stringByExpandingTildeInPath] でOK。

  1. コメントはまだありません。

  1. トラックバックはまだありません。

*


Advertisement