2011-10-15 53 views
0

我正在制作一款游戏,但我无法尝试设置分数并将它们保存在表格中。我所做的是我已经做到了,我的游戏在每个级别的末尾运行一个方法来检查分数是否应该保存,但我不确定如何保存并对它们进行排序从最高到最低如何在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]; 
} 

回答

0

我实际上找到了一个完美的解决方案来解决我的问题。我所做的是我使用NSMutableArrayName,ScoreTime保存在同样的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]; 
} 
+0

我会建议CoreData。不应该像这样使用'NSUserDefaults'。 – Legolas

0

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

0

有多种方法可以将应用程序数据保存在iPhone上,这在OREILLY's post中有很好的讨论!

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

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

相关问题