私が使用したセーブメカニクス:
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 のオープンにエラーはありません。