2011-06-15 151 views
2

如何在iPhone遊戲中保存遊戲狀態?我把它全部放在NSDictionary中。有人說使用NSUserDefaults,但這似乎意味着像卷的東西。我找不到任何使用遊戲保存的官方示例代碼。什麼是保存遊戲狀態的蘋果方式?iPhone遊戲保存

回答

1

這取決於。 NSUserDefaults對於一些或小的事情都可以,但對於更大的事情你可能想看看CoreData。

1

如果您使用核心數據管理您的所有狀態,那麼您可以免費進行保存和加載。這是大多數iPhone應用程序用作其數據存儲的原因,也是它存在的原因。

從NSDictionary過渡到核心數據很簡單,但您需要了解Core Data如何工作並定義您的方案。

NSUserDefaults是不是應該用來保存諸如遊戲狀態之類的東西,它將用於保存諸如設置等內容。

+0

對此有任何樣品?我的問題是沒有序列化數據,我已經可以將它表示爲字符串,問題在哪裏保存。 – Dani 2011-06-15 20:25:02

+0

這些示例位於:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/cdProgrammingGuide.html - 如果您已經序列化數據,那麼您可能在兔子的下方讓核心數據有價值。我無法回答這個問題。但是,這是從頭開始做事的正確方式。核心數據不會在任何地方,並且是OSX以及iOS技術,所以它是一個很好的技能。您需要繪製數據模式,然後使用託管對象圖與所有數據進行交互。 – Nektarios 2011-06-15 20:52:49

0

存檔用於保存IOS中的對象圖。您可以通過歸檔來檢索完整的保存狀態。

0

還有NSKeyedArchiver這比NSUserDefaults更靈活,但不如CoreData強大。

3

如果你只是想在字典保存是plist文件夾,這樣的事情會工作:

NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString* documentDir = [documentPaths objectAtIndex:0]; 
    NSString * savePath = [documentDir stringByAppendingPathComponent:@"save.plist"]; 
    [dict writeToFile: savePath atomically: YES]; 
+0

但是如果另一個應用程序想要使用save.plist的文件名呢?它會崩潰並燒燬 – Dani 2011-06-15 20:26:35

+1

應用程序無法看到彼此的文件。他們使用單獨的物理位置 – unbeli 2011-06-15 20:31:22

+0

這是一個有點令人困惑,在Mac上的文檔的目錄是〜/文件在iOS它是/ Applications/someapplicationIdentifier/Documents,退房〜/ Library/Application Support/iPhone Simulator/Someversion – 2011-06-15 20:58:30