如何使用 Swift 在基于 UIKit 的游戏中 save/load 游戏状态

how to save/load game state in UIKit based Game using Swift

我正在 Swift 使用 UIKit 开发游戏。我想 save/load 每次关闭和打开游戏时的变化。需要 saved/loaded 的数据是 class 包含 String 和 Int 的数据。

样本class:

class UserData {
     var username: String = String()
     var gamepoints: String = String() 
     var items: [UserItem] = [] 
}

class UserItem {
     var name: String = String()
     var quantity: Int = 0
     var price: Int = 0
}

我只需要保存与上面类似的class。我应该使用什么方法?当游戏关闭并再次打开时,如何检索 UserData class 实例的更新值?有没有一种方法可以将这个 class 值保存到某个地方并在重新启动应用程序后初始化它们?

答案是肯定的。您将要查看 NSCodingNSKeyedArchiver。基本上您需要执行以下步骤:

  1. 让您的 UserDataUserItem 类 实施 NSCoding 协议。
  2. 需要时将它们写入磁盘NSKeyedArchiver
  3. 需要时从磁盘读取它们 NSKeyedUnarchiver

查看这篇文章:http://nshipster.com/nscoding/

但是您还有许多其他存储用户数据的选项 - 您也可以使用 NSUserDefaults、CoreData、SQLite 等存储用户数据。您的问题确实很广泛,并且不知道您游戏的具体细节:它需要多久 read/output 这些数据,它有多少,你使用什么数据结构来收集它......很难给你一个明确的正确答案。