私はこのコードを持っていました
NSString *path = @"foo/bar"; // Note this is a directory, not a file!
NSString *pathInBundle = [[NSBundle mainBundle] pathForResource:path ofType:nil];
10.8 では問題なく動作していましたが (バンドルで見つかったパスを返します)、10.7 では nil を返しました。
私はこのコードを持っていました
NSString *path = @"foo/bar"; // Note this is a directory, not a file!
NSString *pathInBundle = [[NSBundle mainBundle] pathForResource:path ofType:nil];
10.8 では問題なく動作していましたが (バンドルで見つかったパスを返します)、10.7 では nil を返しました。
以下は、少なくとも 10.6 -> 10.8 で、適切なローカライズされたバリアントを含む、バンドルのサブディレクトリ内の任意のアイテムへのパスを見つけるために機能するはずです。
// long hand...
NSString *item = [path lastPathComponent]; // path/item -> item
NSString *itemBase = [item stringByDeletingPathExtension]; // base[.ext] -> base
NSString *itemExtension = [item pathExtension]; // base[.ext] -> ext or @""
NSString *pathDirectory = [path stringByDeletingLastPathComponent]; // path/item -> path
NSString *pathInBundle = [[NSBundle mainBundle] pathForResource:itemBase
ofType:itemExtension
inDirectory:pathDirectory];
パスであることの許可はpathForResource:
、10.8 の (文書化されていない?) 拡張のようです。文書化されていない限り、使用しないことをお勧めします。