2011-10-15 85 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進行數據存儲。如果您需要顯示數據,如果用戶登錄到其他設備,我會說 - 與網絡服務同步!

相關問題