【发布时间】:2011-06-15 20:16:20
【问题描述】:
如何在 iPhone 游戏中保存游戏状态?我在 NSDictionary 中都有。有人说使用 NSUserDefaults 但这似乎意味着像音量这样的东西。我找不到任何使用游戏保存的官方示例代码。苹果保存游戏状态的方法是什么?
【问题讨论】:
标签: iphone objective-c
如何在 iPhone 游戏中保存游戏状态?我在 NSDictionary 中都有。有人说使用 NSUserDefaults 但这似乎意味着像音量这样的东西。我找不到任何使用游戏保存的官方示例代码。苹果保存游戏状态的方法是什么?
【问题讨论】:
标签: iphone objective-c
如果您只想将 dict 保存为文档文件夹的 plist,则可以使用以下方法:
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* documentDir = [documentPaths objectAtIndex:0];
NSString * savePath = [documentDir stringByAppendingPathComponent:@"save.plist"];
[dict writeToFile: savePath atomically: YES];
【讨论】:
这取决于。 NSUserDefaults 可以用于一些或小的事情,但对于更大的事情,您可能需要查看 CoreData。
【讨论】:
如果您使用 Core Data 管理所有状态,那么您可以免费保存和加载。这是大多数 iPhone 应用程序用作数据存储的原因,也是它存在的原因。
从 NSDictionary 到 Core Data 的转换很简单,但您需要了解 Core Data 的工作原理并定义您的方案。
NSUserDefaults 不是应该用来保存游戏状态之类的东西,它是用来保存设置之类的东西。
【讨论】:
归档用于在 IOS 中保存对象图。您可以通过归档来检索完整的保存状态。
【讨论】:
还有NSKeyedArchiver,它比NSUserDefaults更灵活,但不如CoreData强大。
【讨论】: