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++;
    }
}

NSUserDefaults用于在 ios 设备的设置窗格中显示应用程序设置。不要在那里保存您的应用程序数据。代替NSUserDefaults你可以plist用来存储数据。

请检查链接

于 2012-07-21T07:06:10.823 回答