したがって、私のアプリは Amazon Dynamo DB データベースにクエリを実行し、数キロバイト相当のデータを取得します。私がアプリに実行させたいのは、最初にすべてをダウンロードし、その後は毎回タイムスタンプをダウンロードして、最新バージョンのデータがあるかどうかを確認することです。たまにデータをダウンロードするだけで済むように、NSKeyedArchiver を使用して、ダウンロードしているアレイをアーカイブしようとしています。私はこの 3 つの異なる方法を試しましたが、いずれも iPhone では機能しませんが、そのうちの 2 つはシミュレーターで機能します。
[NSKeyedArchiver archiveRootObject:self.dataArray toFile:@"dataArray.archive"];
これは、シミュレーターでも実際の iPhone でも機能しません。このメソッドの結果は NO です。
次に使用したのはフルパスです。
[NSKeyedArchiver archiveRootObject:self.dataArray toFile:@"Users/Corey/Desktop/.../dataArray.archive"];
これはシミュレーターでは機能しましたが、iPhone では機能しませんでした。私の推測では、コンパイルすると、ファイルシステムが異なって見えます (そして、明らかに同じパスはありません)。次に、私は試しました:
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"dataArray" ofType:@".archive"];
[NSKeyedArchiver archiveRootObject:self.dataArray toFile:filePath];
繰り返しますが、これはシミュレーターでは機能しますが、iPhone では失敗します。アーカイブへの書き込み前にすべてのデータが self.dataArray にあることを確認し、アーカイブへの書き込み後に配列が nil であることを確認しました (iphone 版)。何が起こっているのですか?ファイルパスを行うためのより良い方法はありますか?