如何在iPhone App中保留用户分数?

时间:2011-10-15 23:21:19

标签: iphone

我正在开发一款游戏,但我在尝试设置分数并将其保存在表格中时遇到了麻烦。我所做的就是我已经把它带到了我的游戏在每个级别结束时运行一个方法,以检查分数是否应该保存,但我不知道如何保存它们并从从最高到最低对它们进行排序。

这是我的表格应包含的内容:

  • #:
  • 命名
  • 得分:
  • 时间:

按照这个顺序,我还把它分类为只包含14行。

我在XIB上的内容是一个滚动视图,里面有一个图像,显示图表和顶部字段 [#:,Name:,Score:,Time:] 。我不知道如何显示字段的文本。

如果有人能向我解释我将如何制作并跟上排序以及在表格中显示它们的所有内容,我将不胜感激。

Scores

到目前为止,这是我的代码,但它可能会发生变化,所以请随意纠正我错在哪里或为我提供不同的解决方案。

提前致谢!

-(void) mGameScoreSelected {
    if (![sGameScoresScore isEqualToString:@""]) {
        sScoresRowCurrent = [NSString stringWithFormat:@"%i | %@ | %@ | %@", iGameScoresPlace,sGameScoresName, sGameScoresScore, sGameScoresTime];

        kLog(@"%@", sScoresRowCurrent);
    }
}

-(void) mGameScoreDetermine {
    bGameScoreSetFinished = TRUE;

    for (int x = 0; x <= 3*14; x++) {
        if ([sGameScoresScore intValue] > [sScoresScores [x-1] intValue] && bGameScoreSetFinished == TRUE) {
            [self mGameScoreSelected];
            bGameScoreSetFinished = FALSE;
        } else {
            sGameScoresScore = @"";
            sGameScoresTime = @"";
        }
    }
}

-(void) mGameScoreSet {    
    sGameScoresScore = [NSString stringWithFormat:@"%i", iGameScoreCurrent];
    sGameScoresTime = [NSString stringWithFormat:@"%i", iGameTimeTotal - iGameTimeCurrent];

    kLog(@"Score: %@", sGameScoresScore);
    kLog(@"Time: %@", sGameScoresTime);

    [self mGameScoreDetermine];
}

-(void) mGameEnded {
    [self mGameScoreSet];
}

3 个答案:

答案 0 :(得分:0)

我建议使用Core Data programming guide并在那里创建你的表格。然后,您可以使用NSFetchedResultsController来获取这些对象,并轻松显示您想要的内容。

答案 1 :(得分:0)

有多种方法可以在iPhone上保存应用程序数据,这在OREILLY's post中进行了精彩的讨论!

关于在字段中显示它们,您需要实现从数据库中检索信息的方法,并且您可以通过多种方式执行此操作。您需要查看Core Data Documentation

这又取决于你的需求。您可以使用NSUserDefaultssqlLite进行数据存储。如果您需要显示数据,如果用户登录到其他设备,我会说 - 将其与网络服务同步!!!

答案 2 :(得分:0)

我实际上找到了解决问题的完美方案。我所做的是使用NSMutableArrayNameScoreTime保存在同一个NSString中,例如:@"Fer|2194|17"。然后我做的是使用下面漂亮的代码对数组进行排序。然后我将其保存到每次启动应用程序时加载的NSUserDefaults

排序数组

-(void) logArray:(NSArray *)array sorted:(BOOL)sorted {
NSString * result = @"";

    if ([array count] != 0) {
        result = [NSString stringWithFormat:@"Items in array: %d", [array count]];
        result = [result stringByAppendingFormat:@"\nSorted: %s", (sorted ? "TRUE" : "FALSE")];

        if (sorted == TRUE) {
            array = [array sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
        }

        for (int x = 0; x < [array count]; x++) {
            result = [result stringByAppendingFormat:@"\n%d: %@", x, [array objectAtIndex:x]];
        }
    } else {
        result = @"No Items In Array";
    }
    NSLog(@"%@", result);
}

<强> NSUserDefaults的

-(void) saveObjectToUserDefaults:(id)object forKey:(NSString *)key {
    NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults];
    [userDefaults setObject:object forKey:key];
    [userDefaults synchronize];
}