ユーザーのデフォルトに保存された同等のオブジェクトが既に存在するかどうかに基づいてオブジェクトを作成したいアプリがあります。私はクラスinitでこれを検出し、オブジェクトが検出された場合に早期に戻りたいと思います。これは私が何をしようとしていますものです:コンソールでのカップルのエラーがあります早送りのinitから早く復帰する方法3
init() {
/* There are two possibilities when creating a hero:
1. The hero is brand new and needs to be built from scratch
2. The hero is loaded from defaults */
// Check to see if there is existing game data:
if defaultExistsForGameData() {
// This means there is a hero to load and no need to create a new one
self = extractHeroFromDefaults() // This just loads from UserDefaults
print("Loading hero from defaults with name of: \(hero.heroName).")
return self
}
// These actions are for creating a brand new hero
let size = CGSize(width: 32, height: 32)
let heroTexture = SKTexture(imageNamed: "hero2.ico")
super.init(texture: heroTexture, color: .clear, size: size)
self.isUserInteractionEnabled = true
self.name = "hero"
self.zPosition = 50
}
、自己など、不変である私は、これは有効なパターンである場合は、私は完全に服用すべきかどうかを知りたいどのような異なるアプローチ。
これは正確に私が必要とした分析です。私がまだ実行している1つの問題は、カスタムオブジェクトをデフォルトに保存しても、それを遡ってロードすることができますが、オブジェクトが作成されたときのプロパティはすべてデフォルト値です。 NSCodingなどの実装のようないくつかのステップを踏む必要がありますか? – zeeple
これはユーザーのデフォルトにどのように書き込んでいるかによって異なります。一般に、あなたのアプローチが 'NSCoding'を必要としていたとしても、そうしなければ全く機能しません。あなたが書いていると思っていることを実際に書いていることを確かめ、あなたが読んでいるものから実際に価値を創造していることを確認します。たくさんの 'print'ステートメントやブレークポイントがあなたの友人です。 –