2011-11-14 4 views
0

Xcodeデバッガで以下のコードを実行すると.app拡張子を持つパッケージが見つかりますが、スタンドアロンの "file"オブジェクトはnilです。実際に私がNSLogsをやったときにfolderEnumもゼロだった。 folderPathは、プログラムの実行可能ファイルと同じディレクトリにあるフォルダを指しています。NSFileManagerは、デバッガ下で実行されている場合にのみフォルダ内のファイルを検索します

NSFileManager *localFileManager = [[NSFileManager alloc] init]; 
NSDirectoryEnumerator *folderEnum = [localFileManager enumeratorAtPath:folderPath]; 
NSString *file; 
while (file = [folderEnum nextObject]) { 
    if ([[file pathExtension] isEqualToString: @"app"]) { 
    break; 
    } 
} 

Macのシステムファイルのアクセス許可と何か関係がありますか?私はおそらくFOLDERPATHが実際に相対パスではなく絶対的なものであったことに言及している必要があります

編集。そこで、folderPathを[[NSBundle mainBundle] bundlePath]パスに相対的に変更しました。しかし、誰かが光を放つことができれば、なぜ相対的な道がうまくいかないのか。すべての違いを作る

NSFileManager *localFileManager = [NSFileManager defaultManager];

答えて

1

はに最初の行を変更していますか?アプリケーションのパスを取得しようとしていますか? (簡単な方法があります)

+0

それは役に立たなかった。すべてのファイルシステム操作が失敗しているようです。 NSTaskの起動も低下していますが、起動パスをハードコーディングしても、「起動パスはアクセスできない」と返します。もちろん、これらはすべてデバッガ上でうまく動作します。私が何をしているのかを知るために、さまざまなインストーラを実行してファイルシステムの操作を実行するカスタムインストーラを作成しています。 – Nikolozi

+0

あなたは偶然、エンタイトルメント(つまりサンドボックス)を有効にしていませんか? –

+0

私は以前の資格と資格が間違いなく無効になっていることを確認しました。しかし、Sandboxing型の問題のように思えます。しかし、「エンハンストを有効にする」チェックが外されています。 – Nikolozi

関連する問題