2009-08-24 14 views
0

私のアプリには、 'didReceiveMemoryWarning'通知を受け取っても持続する必要があるデータ構造がいくつかあります。データは、ユーザーがアプリで実行したすべてのアクション(ゲーム)の実行ログのようなものです。iphoneアプリケーションのデータを低メモリに保存する

私が持っているデータは少量ではないかもしれません(数百KBになる可能性があります)ので、正しい解決策であるようです。

最初の2つの可能性は、オブジェクトをアーカイブし、これらのオブジェクトでNSCodingプロトコルをサポートすることです。これが正しい選択肢かどうかは分かりません。

2番目のオプションは、NSManagedObjectModelとNSPersistentStoreCoordinatorを使用してCoreDataにあるようです。これは、これらのオブジェクトを格納するための良い方法ですか?それとも過剰なのですか? (Appleの「Recipes」サンプルアプリを参考にしています)。

私のオブジェクトは、最終的にNSString、NSNumber、NSIntegerなどの単純な型を保持するカスタムオブジェクト型です。私が持っているデータ型のいくつかの

サンプル:

// this the base object I need to start with to persist 
@interface MyDataObject : NSObject 
{ 
    MyScore  *aScore; 
    // Contains an object of type 'MyAction' 
    NSMutableArray *allActions; 
} 

@interface MyScore : NSObject 
{ 
    NSInteger currentScore; 
    NSDate  lastUpdated; 
} 

@interface MyAction 
{ 
    NSNumber *actionId; 
    NSString *description 
    MyUser  *associatedUser; 
} 
@interface MyUser 
{ 
    NSNumber *id; 
    NSString *name; 
    NSString *email; 
} 

ユーザーは別のゲームの束を再生することができますし、各ゲームのために、私は彼らが作った動く何のアクティビティログを持っています。ユーザーは各ゲームでこれまでに行った動きをプレイ中に見ることができ、アクティブなゲームである&を切り替えることもでき、過去の動きも確認できます。

+0

データを使用する予定を投稿するのが適切です。どのようにデータにアクセス/取得したいのかは、どちらの方が優れた解決策であるかに影響を与えます。 – Jacob

+0

この情報を含めるためにオリジナルの投稿を変更しました。 –

答えて

1

ここに警告があります。あなたのアプリがこれらのメッセージを受け取るのを開始し、ハンドラを使って膨大な量のデータを書き出している場合、カーネルは状況が悲しい場合(カーネルのPOVから)アプリの保存を完了させないことがあります。どのようなアプローチを使用してログを使用する場合でも、このデータをバッキングストアに徐々に落としておく必要があります。この状況が発生した場合でもデータを失うことはありません。

+0

ありがとうございます。私は定期的にデータをアプリに永続させるつもりであることを忘れていました。私はちょうどどれが使うべきより良い仕組みか分かりません。 –

0

私はいくつかのことをお勧めします。

  1. 実際に現在使用されているデータの量はどれくらいですか?それが使用されていない可能性が高い場合は、保存してください。

  2. どのくらい再作成/再構築できますか?

Appleが提供するSQLiteブックの例を見てください。

私は道に沿ってデータのゴブを作成するアプリに取り組んでいます。ほとんどが使用されていませんが、どのデータが使用されるかわかりません。私がやることは、使用される可能性が最も高いデータの小さなキャッシュを保持し、残りはリアルタイムでSQLiteデータベースに移動することです。私の記憶要件は非常に小さく、100Kかそれ以上です。過去にはそれはメグ(そしてクラッシュ)でした。

+0

各ゲーム内で、アクティブなゲームに関連するデータとアクティビティログが頻繁に使用されます。他のすべてのゲームデータは保存されます。定期的には、アクティブなゲームの中で、私は最も最近生成されたデータを維持しなければならないでしょう。 –

関連する問題