2011-09-15 72 views
2

我正在研究新的iPhone應用程序,此刻我正在嘗試使用NSUserDefaults保存和加載高分數據。 我的問題是:我應該使用什麼代碼來分配我保存到一個名爲highscorespointer1的變量,這是一個指向NSInteger的指針? 我目前使用的代碼如下所示:使用NSUserDefaults保存和加載數據所需的幫助

在這裏,我保存的高分。注意變量highscore1的類型是NSInteger的:

-(IBAction)saveData{ 
     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setInteger:highscore1 forKey:@"H1"]; 
    [defaults synchronize]; 
      } 

我在這裏裝載highscore.But我得到這樣的警告:「從分配不兼容的指針類型」:

highscorepointer1 = [[NSUserDefaults standardUserDefaults] objectForKey:@"H1"]; 

回答

1

setInteger:forKey方法套一個int,而不是一個int *,這意味着它設置一個值,而不是一個指針。確保您的highscorepointer1int,而不是int *。無論如何將指針保存到整數是沒有意義的,但實際的整數本身應該被保存。希望有助於!

+4

並使用'integerForKey:'檢索整數而不是'objectForKey:'。在那一刻起源發佈者試圖將一個指向一個對象的指針指向一個文字的指針。 – Tommy

+0

非常感謝!我做了你所說的話,它像一個魅力。我還有一個問題:當我將保存的數據分配給一個指針之前,我可以使用這一行代碼:if(highscorepointer1 == nil){highscore1 = 0;}'如果它是高分爲零該應用程序第一次執行。有沒有類似的東西我現在可以使用,我將加載的數據直接分配給整數highscore1? – CherryBrandy

+0

實際上,默認情況下,如果你使用'highscore1 = [[NSUserDefaults standardUserDefaults] integerForKey:@「H1」];',並且它還沒有設置,那麼'highscore1'將等於'0'。 – msgambel