1

スコアを保存するためにこのコードを実行しました。

しかし、これは、毎回新しいインデックスにデータを保存するのではなく、最後に追加されたスコアのみを提供しています。

-(IBAction)btnSaveScore:(id)sender
{
    if(!dictWinData)
        dictWinData = [[NSMutableDictionary alloc] init];

    array = [NSMutableArray arrayWithObjects:txt_EnterName.text,
                                             [NSString stringWithFormat:@"%i",iTap], nil];

    int increment = 0;

    NSLog(@"array data is:--> %@",array);

    for (int intWinData = 1; intWinData < [array count]; intWinData++)
    {
        [dictWinData setObject:array forKey:[NSString stringWithFormat:@"NameScore%d",increment]];
        increment++;
    }
}

私のコードに間違いがある場合は、ガイドさせてください。

データを保存する他の方法はありますか..?

NSUserDefaultsデータの保存と表示に役立ちます... ?

NSUserDefaultsデータの保存と取得に使用する方法。

ありがとう。

4

1 に答える 1

1

問題は次の行にあります。

int increment = 0;

保存ボタンを押すたびincrementに がゼロに初期化されるため、値が同じキーのディクショナリに追加されるたびにNameScore0。したがって、既存の辞書値を上書きします。

incrementを静的にstatic int increment = 0;するか、グローバル変数として作成する必要があります。これで問題が解決します。

-(IBAction)btnSaveScore:(id)sender
{
    if(!dictWinData)
        dictWinData = [[NSMutableDictionary alloc] init];

    array = [NSMutableArray arrayWithObjects:txt_EnterName.text,
                                             [NSString stringWithFormat:@"%i",iTap], nil];

    static int increment = 0;

    for (int intWinData = 1; intWinData < [array count]; intWinData++)
    {
        [dictWinData setObject:array forKey:[NSString stringWithFormat:@"NameScore%d",increment]];
        increment++;
    }
}

NSUserDefaultsiOS デバイスの設定ペインにアプリケーションの設定を表示するために使用されます。そこにアプリケーション データを保存しないでください。代わりに、データを保存するためにNSUserDefaults使用できます。plist

リンクを確認してください

于 2012-07-21T07:06:10.823 に答える