概要
SpriteKit でも CoreData は使えるのですが結構頑張る必要があります
簡単なデータ保存であれば UserDefaults を使うのが簡単です
環境
- macOS X 10.12.6
- Xcode 8.3.3 (8E3004b)
使い方
まず didMove(to view: SKView)
で初期化します
let defaults = UserDefaults.standard
didMove 以外の関数で使いたい場合はインスタンス変数として定義しておくと良いと思います
あとは好きな場所でデータの操作をします
例えば Int の値を保存して取得する場合は set で保存して
defaults.set(1, forKey: "key")
integer メソッドで取得します
let score = defaults.integer(forKey: "key")
set した際の型によって取得する際のメソッドが変わってくるので注意してください
所謂 kvs 的に使えます
最後に
SpriteKit で UserDefaults を使用する方法を紹介しました
UserDefaults はアプリが削除するまたはアプリのデータが削除されない限り残り続けます
当然ですがデータを永続化したい場合は Firebase などの mBaaS サービスを使いましょう
とりあえずローカルでデータを保存したい場合にはこれで十分かなと思います
CoreData は便利なんですが、ManagedObject のクラスなどを生成したりする必要があるので少し大変です
独自で定義したクラスのオブジェクトなどを set したい場合は一旦 NSData に変更する必要があるようです
返信削除https://stackoverflow.com/questions/42777730/cannot-set-non-property-list-object-in-userdefaults
かつ import Foundation をして NSObject を継承したクラスにしないと「Unrecognized selector -[project.MyClass replacementObjectForKeyedArchiver:] のエラーになるようです
返信削除かつ NSCoding を継承して required convenience init(coder aDecoder: NSCoder) と func encode(with aCoder: NSCoder) を実装する必要があります
https://stackoverflow.com/questions/25750088/swift-does-not-conform-to-protocol-nscoding