0

アプリの概要:

ユーザーは、インターネット速度テストやその他の種類のテストを実行して、さまざまな結果を得ることができます。通常、テストの結果は NSArrays と NSStrings に保存されます。

標的:

ユーザーが過去の結果に戻って表示できる履歴システムを作成しようとしています。

問題:

どのストレージ メディアを使用すればよいか、また、すべてをどのように組み合わせるべきかを理解するのに苦労しています。

文字列または整数値を使用して NSUserDefaults に名前を付ける方法はありますか? たとえば、値が「history1」の「hisName」という文字列があります。NSUserDefaults *hisName に名前を付けて、値 history1 に戻すことはできますか? テストごとに番号が増加し、新しい履歴のデフォルトが作成されるという考え方です (history2、履歴 3 など)。

このアプリの Android 版では、これが可能です。したがって、アプリは、許可された履歴の最大数に応じて、その場で「History-X」を作成するだけです。最大に達すると、最初のものが上書きされます。

アップデート:

私が何を得ているのかを説明するためにもう少し努力します。

ユーザーがテストを終了すると、必要なすべてのデータが History1 という名前の NSUserDefaults/NSDictionary ファイルに保存されます。

次に、HistoryCount という Integer の値を 2 に増やします。ユーザーが別のテストを実行するときに、NSUserDefaults/NSDictionary "History2" を呼び出したいと思います。ここで、2 は Integer HistoryCount から取得されます。NSString などで NSUserDefaults/NSDictionary に名前を付ける方法が見つかりません。

4

1 に答える 1

0

このメソッドを使用して辞書を保存します。

-(void)saveDefaults:(int)historyCount{
    NSDictionary *history1 = [NSDictionary dictionary]; //You already have this dictionary
    NSString *historyKey = [NSString stringWithFormat:@"history%d",historyCount];
    [[NSUserDefaults standardUserDefaults] setObject:history1 forKey:historyKey];
}

したがって、コードは次のようになります。

self.historyCount =1;

[user runTest]; //first run 
[user saveDefaults:self.historyCount];
self.historyCount++;


[user runTest];
[user saveDefaults:self.historyCount];
self.historyCount++;

等々..

同じユーザーに複数の履歴ディクショナリオブジェクトが必要な場合は、履歴オブジェクトのグループを配列として格納するか(インデックスを使用して履歴オブジェクトにアクセスします)、キーのようなキー@"history1"と値を持つディクショナリを使用できますhistory1。上記のように新しいキーを生成できます。

ただし、複数のユーザーがいて、ユーザーごとに多数の履歴オブジェクトがある場合、追跡が困難になる可能性があります。代わりに、オブジェクトの永続化/管理にコアデータを使用できます。

于 2013-03-19T06:22:39.513 に答える