2012-03-29 36 views
1

我想只保存本地使用的高分。一個int,保持你的最高分,所以我可以在新的分數製作時測試它。iOS:在本地保存高分

你會推薦使用plist嗎?

喜歡的東西:

NSString *path = [[NSBundle mainBundle] bundlePath]; 
NSString *finalPath = [path stringByAppendingPathComponent:@"Info.plist"]; 
NSDictionary *plistData = [[NSDictionary dictionaryWithContentsOfFile:finalPath] retain]; 

versionLabel = [[UILabel alloc] initWithFrame:CGRectMake(100,100,60,25)]; // for example 
versionLabel.backgroundColor = [UIColor clearColor]; 
versionLabel.textColor = [UIColor whiteColor]; 
versionLabel.font = [UIFont systemFontOfSize:10]; 
NSString *versionString = [NSString stringWithFormat:@"v%@", [plistData objectForKey:@"CFBundleVersion"]]; 
versionLabel.text = versionString; 
[self.view addSubview:versionLabel]; 

將這個數據是可用的應用程序被打開,下一次?

回答

5

做最快最容易的事情,恕我直言,將使用NSUserDefaults。您可以快速讀取/寫入plist,但不需要處理創建僅用於單個值的全新文件。設置高分的代碼應該是這樣..

[[NSUserDefaults standardUserDefaults] setInteger:100 forKey:@"high_score"]; 

繁榮,這就是你所需要的。然後,當你下次啓動應用程序,並要檢查高分,也許在 - (空)gameEnded方法,或 - (無效)viewDidLoad中,你剛纔說

NSInteger lastHighScore = [[NSUserDefaults standardUserDefaults] integerForKey:@"high_score"]; 

lastHighScore現在將要存儲的值在您之前保存的用戶默認值中。使用setInteger:forKey:如果鍵已經存在,將覆蓋以前的值。

+0

這個效果很好,但是對於那些希望最終讓這些分數成爲全局分數的遊戲中心或ngmoco或其他任何人來說,'NSUserDefaults'只是一個plist。對於那些越獄手機進入並改變這些價值觀以獲得高分的人來說,這是極其微不足道的。 – 2012-03-29 14:21:16

+0

很高興知道。我從來沒有在GameCenter上做過任何事情,也沒有對監獄破碎的手機進行黑客入侵。感謝您的洞察! – jmstone617 2012-03-29 14:22:39

+0

做了我所需要的,謝謝 – Lohardt 2012-03-29 14:36:19