如何使用Swift在基于UIKit的游戏中保存/加载游戏状态

时间:2015-07-13 13:10:57

标签: ios swift uikit

我正在使用UIKit在Swift中开发游戏。我想在每次游戏关闭和打开时保存/加载更改。需要保存/加载的数据是包含String和Int的类。

示例类:

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
}

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

1 个答案:

答案 0 :(得分:3)

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

  1. 让您的UserDataUserItem类实施NSCoding协议。
  2. 当您需要使用NSKeyedArchiver
  3. 时,将它们写入磁盘
  4. 当您需要使用NSKeyedUnarchiver
  5. 时,请从磁盘中读取它们

    查看此文章:http://nshipster.com/nscoding/

    但是,您还有许多其他选项可用于存储用户数据 - 您还可以使用NSUserDefaults,CoreData,SQLite等存储用户数据。您的问题非常广泛,并且不知道您游戏的具体情况:如何通常它需要读取/输出这些数据,它有多少,你用它来收集它的数据结构......很难给你一个明确的正确答案。