2012-11-12 51 views
0

我是新來的,並且遇到任何幫助都會很棒!我使用Xcode來構建我的應用程序。如何在使用Xcode的變量中使用NSUserDefaults來存儲日期

我有一個IBAction「按下按鈕」,這會產生隨機數,然後我有一堆if語句。最終,如果事情匹配我的長期變量「硬幣」有一個數值。現在我只是改變硬幣的價值=硬幣+10,然後顯示在UILabel。我現在需要在所有計算後,每當用戶按下按鈕時存儲該值。所以他們的「硬幣」總數正在被加入或減去。此外,我會添加和在應用程序中購買廣告到「硬幣」變量。所以我知道我需要一種方法來存儲價值,即使應用程序關閉並重新打開。

有沒有辦法使用NSUserDefaults來存儲該值,要麼在原來的IBAction buttonPressed?也或者任何幫助或建議將是偉大的!感謝和抱歉,如果這聽起來有點扯,但我對我的第一個應用:)

回答

1

要存儲在一個NSUserDefaults的數量:

[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithUnsignedLongLong:coins] forKey:@"coins"]; 

從檢索NSUserDefaults的,並將其存儲到硬幣:

coins = [[[NSUserDefaults standardUserDefaults] objectForKey:@"coins"] unsignedLongLongValue]; 

這假設你已經聲明硬幣是一個無符號long long,而不是簽名的。另外,如果你想要通過這些方法,還有便捷的方法來存儲NSInteger。

編輯:只是意識到你想擁有IAPs,應該仔細閱讀。我建議不要在NSUserDefaults中存儲任何有價值的東西(密碼,用戶名,可購買的貨幣,可以提交給在線排行榜的高分等)。它被存儲爲一個簡單的.plist(XML),據我瞭解,它可以相對容易地編輯。

+0

謝謝你的回答。我認爲這可能有點容易。這將是可購買的貨幣。你會如何推薦我保存這個?外部服務器?如果是這樣,你有任何提示或方向,你可以指向我?事實上,這是我第一次參加的簡單比賽。我不會擔心人們爲了獲得更多信用而入侵,但我不希望蘋果以此爲由拒絕我。你有任何想法也會有幫助!謝謝 – Herbie999

+0

我不太確定我自己。 NSUserDefaults主要用於首選項,所以它不是很安全。鑰匙鏈真的是用於密碼和東西,雖然你可能會找到一種方法來堅持它,它會很安全。除非你想開始對事物進行加密並將它們寫出來或將它們存儲在服務器上(這兩種方法似乎都是過度的),否則沒有太多的事要做。如果你使用NSUSerDefaults,我不認爲蘋果會拒絕你的應用程序,並且因爲它只是一個簡單的遊戲,我會說繼續。如果某個地方的某個人獲得了一千個免費硬幣,這不是什麼大問題。 xD – Metabble

+0

噢,另外,讓事情變得難一點的一種方法是將所有內容都更改爲NSData,然後將其保存到NSUSerDefaults中。拿這個數字,把它變成一個字符串,使用NSString的方法使用unicode將它變成NSData,並存儲它。要加載,檢索數據,從中創建字符串並獲取值。直接存儲NSNumbers會產生一個簡單的十進制字符串,而我很確定NSData是在Base64中寫出來的。它仍然可以編輯,但大多數人可能不會打擾。另外,如果你使用了一些奇怪的鑰匙,沒有人會知道它到底是什麼。 – Metabble

相關問題