-2

私が使用したセーブメカニクス:

    NSMutableData *data = [[NSMutableData alloc] init];
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
    [archiver encodeObject:self forKey:@"Save"];
    [archiver finishEncoding];
    [data writeToFile:filePath atomically:YES];
    [archiver release];
    [data release];

利用した

[[NSFileManager defaultManager] fileExistsAtPath:savePath];

[[NSFileManager defaultManager] contentsOfDirectoryAtPath:[SynchronizedData createPath] error:&error]

私のファイルの存在を確認します。彼らはファイルが存在することを確認します。

ただし、同じディレクトリパスでファイルをロードできません

    //NSData *encodedData = [[NSFileManager defaultManager] contentsAtPath:[SynchronizedData createPath]];

    NSData *encodedData = [[[NSData alloc] initWithContentsOfFile:tempFilePath] autorelease];

    if (encodedData == nil) {
        NSLog(@"Save cannot open while loading!");
        return nil;
    }

上記のencodedDataはどちらもnilを返しました。(自動解放は問題ではありません、私はチェックしました)

何が問題なのですか?

前のスレッドで同様のケースを見つけました。tempFilePath をもう一度保持しようとしましたが、問題はありません。問題はまだ存在します。


上記のメカニズムよりも単純なメカニズムで保存を行いました。

ディレクトリから NSData を取得する問題は未解決のままでした。おそらく、@paxdiablo が言及した読み取り許可が原因です。

したがって、「ライブラリ」の代わりに「ドキュメント」フォルダを使用します。NSData のオープンにエラーはありません。

4

1 に答える 1

1

ファイルは存在できますが、読み取りはできません。おそらく、そのファイルのアクセス許可を確認することから始める必要があります。

また、initWithContentsOfFile:options:error:バリアントを使用してエラーを返します。これにより、問題があるかどうかがわかります。

そして、あなたが見ているあなたのコメントに基づいて:

ココア エラー 257

権限に問題があるようです。Foundation 定数を見ると、次のことがわかります。

NSFileReadNoPermissionError = 257

そのファイルを読み取る権限がないことを意味します。

于 2012-11-15T08:06:10.273 に答える