2011-06-18 33 views
0

我想要做的是給我的分數列表添加一個名稱。截至目前,我有一個名字被保存爲NSString,我的得分被保存爲一個整數,後來我會想要從高到低排序(分數)。下面是我的代碼,將整個分數保存爲一個整數,然後在高分數視圖中,我將這個分數從plist中調出並顯示出來。我想我需要使用NSDictionary來保存名稱的字符串和分數的整數。這是我卡住的地方,如果有人可以幫助它將不勝感激。顯示高分名稱(iPhone應用程序)

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 

NSString *scoresListPath = [documentsDirectory stringByAppendingPathComponent:@"scores.plist"]; 

scoresList = [[NSMutableArray arrayWithContentsOfFile:scoresListPath] retain]; 

if (scoresList == nil) { 
    scoresList = [[NSMutableArray array] retain]; 




- (void)addHighScore:(float)finalScore { 
    [scoresList addObject:[NSNumber numberWithFloat:finalScore]]; 

    [scoresList sortUsingSelector:@selector(compare:)]; 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 

    NSString *scoresListPath = [documentsDirectory stringByAppendingPathComponent:@"scores.plist"]; 
    [scoresList writeToFile:scoresListPath atomically:YES]; 
} 

回答

0

你的基本思想是正確的,但不是隻保存一個NSNumbers數組,而是保存一個NSDictionaries數組。

因此,保持你的NSMutableArray事情是這樣的,並且只需添加分數吧:

NSDictionary *score = [NSDictionary dictionaryWithObjectAndKeys: theName, @"name", [NSNumber numberWithFloat:finalScore], @"finalScore", nil]; 
[scoresList addObject: score]; 

的得分列表仍然會寫出它的plist中正確,因爲NS [易變]數組包含其中只包含數字詞典和字符串,這些知道如何寫出自己的plist(見NSCoder)。

當您讀回您的數組時,-objectAtIndex:我將是一個NSDictionary,您可以使用-objectForKey:@「name」獲得名稱,並使用-objectForKey:@「finalScore」獲得分數。

相關問題