2012-03-05 22 views
2

まずは英語で私の言い訳をしてください。これが私の最初の質問です。私は、stackoverflowとIMO stackoverflowのコミュニティの一般的で珍しい問題の解決策をたくさん読んできました。stackoverflowのコミュニティは、ブランチで最も信頼できるものです。iOS: "公開:許可が拒否されました"

現在、私はiOSアプリケーションを開発していますが、最近問題が発生しましたが、いくつかの調査の後に解決策が見つかりませんでした。私は、既存のファイルを開くにはfopenを使用していたとき、私は次のエラーを取得しています:

open: Permission denied 

は、次のエラーが発生するコード切り取らです:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); 
NSString *cachePath = [paths objectAtIndex:0]; 
BOOL isDir = NO; 
NSError *error; 
if (! [[NSFileManager defaultManager] fileExistsAtPath:cachePath 
              isDirectory:&isDir] && isDir == NO) { 

     [[NSFileManager defaultManager] createDirectoryAtPath:cachePath 
            withIntermediateDirectories:NO 
                attributes:nil 
                 error:&error]; 
}   

NSString* filePath = [cachePath stringByAppendingPathComponent: 
           [NSString stringWithFormat:@"tmpmem%i.bin", count++]]; 

const char *cPath = [filePath cStringUsingEncoding:NSISOLatin1StringEncoding]; 

int file = open(cPath, O_RDWR | O_CREAT); 

if (file == -1) 
{ 
    perror("open"); 
    return NULL; 
} 

私はあなたの助けのために楽しみにしています。前もって感謝します。

よろしく、 B.ディミトロフ

+0

バッファが何であるか知らずに知るのは難しいですか?あなたのすべてのパスは[NSBundle mainBundle]に関連している必要があります –

+0

私はコードスニペットを更新しました。 –

+0

私はこの時点でうんざりしているでしょう、私はキャッシュディレクトリに精通していません。システムがここで作られたものの所有権を取っている可能性はありますか?これがうまくいくと信じられるような記事やKBがありますか? –

答えて

0

問題を解決しました。私はフォルダのposixのアクセス許可を確認し、彼らは493だった、私は975に設定し、すべてが期待どおりに動作しています。 1つの新しい質問が発生しました。フラグが4(読み取り)、2(書き込み)、1(実行)であるため、posix権限では9が意味しますか?

2

ほとんどのアプリケーションは何も問題はありません。このエラーの一般的な原因には、cPathという名前のファイルへのパス上のディレクトリに対する検索権限が不足していたり​​、読み取りまたは書き込みのためのファイルを開く権限がなく(ファイル名がO_RDWRであるため) O_CREATが存在しない場合にファイル作成を要求するため、作成するディレクトリへの書き込み権限が不足しています。

ファイルとパス名を検査し、必要なすべてのアクセス許可が適切に設定されていることを確認する必要があります。

+0

に従って動作するはずだと信じていますはい、サンドボックスの外にいる可能性があります –

+0

私は書き込み可能なディレクトリを見つけ出す方法でコードを切り詰めました。私はファイルを作成してそれに書き込むことができますが、私はそれを閉じて再度開いてみるとエラーが発生します。 –

関連する問題