2011-10-21 59 views
5

我正在製作一款遊戲,並且用戶所做的所有進度都將與NSUserDefaults一起保存。這是一個好還是壞的想法?用NSUserDefault保存遊戲進度:好還是壞主意?

保存遊戲失敗的機率是多少?有一個更好的方法嗎?

當用戶同步設備時,iTunes會備份NSUserDefaults?因此,如果用戶更換設備,他不會失去進度,他只需要將設備與iTunes同步?它有多安全?

如果用戶當時沒有互聯網連接,GameCenter的成就也會與NSUserDefaults保存在一起。

嗯,我只是想知道你的意見/經驗。所有的代碼都是完美無缺的,但是恐怕玩家可能因某種原因失去了進步。

如果有人想了解更多關於代碼的細節,可以免費索取,我可以在這裏發佈。

謝謝!

+1

+1我也一直好奇這你的問題幫助我分配,儘管我已經檢查並滿意'NSUserDefault',但好奇心導致我在數據庫上存儲..現在沒有好奇心了,非常感謝這個問題 – rptwsthi

回答

4

NSUserDefaults如果用戶同步應用程序,則會同步到iTunes。只要用戶不刪除遊戲,數據就是安全的。

如果您需要保存數據的用戶刪除遊戲後,也可以考慮將數據保存在其他地方(比如說,Dropbox的,自己的服務器等)

+0

感謝您的回覆。我正考慮在自己的服務器上存儲,然後它可以在多個設備上同步遊戲,例如,如果用戶有iPhone和iPad。任何想法如何做到這一點,導出NSUserDefaults到服務器?沒有代碼,只是我可以研究的東西會很棒。 – tomDev

+2

您可以使用iCloud進行備份,只需記住NSUserDefaults的iCloud等效值僅限於64 kb – EmilioPelaez

+1

將序列化爲JSON字典並將其POST到服務器上的腳本以及用戶名(如果有帳戶的話)。在啓動時,從同一個URL獲取'GET',並返回一個JSON字典對象,您將其反序列化爲一個'NSDictionary'並手動導入到'NSUserDefaults'中。只要對邊緣情況保持警惕,例如,當用戶的兩個設備都已經運行了遊戲,並且其中一個設備更新了設置。您想要做什麼?連續同步?用當前實例的任何設置覆蓋? – darvids0n

9

在我看來,NSUserDefaults是完全安全的。內容甚至在應用程序的版本更新後保持不變。

+0

簡單而正確的答案 –

+0

+ 1 @ ZakyGerman完全正確 – rptwsthi

相關問題