質問: userDefaults.integer(forKey: "contentsCounter") return true } ``` 実行してみた所 save()の方は問題なかったのですが、 load()の方は、以下のエラーが発生してしまいます。 typeMismatch(Swift.Dictionary, Swift.DecodingError.Context(codingPath: [], debugDescription: "Expected to decode Dictionary but found an array instead.", underlyingError: nil)) 戻り値がDictionaryなのに、配列(Array)に入れようとしている。 ということだと思うのですが、decodeのやり方が間違っているのでしょうか。
回答: > > contentsArray_は[ROContents]型として宣言されているものとします。 > > このように重要な情報は必ずご質問中に記載するようにしてください。 > > > 申し訳ありません。省略してしまいました。 以後、気をつけます。 > > (識別子の末尾に_をつけているのはどう言う理由でしょう? > > Swiftのコードとしては滅多に見られないものなので、 > > できればやめた方が良いでしょう。) > > > Objective-C時代からの名残で、メンバ変数には、 末尾に”_”を付けております。 ご指摘の通りに書き換えて試したところ、 UserDefault に保存出来ました! ありがとうございます! ただ、今度は、読み込みの方でエラーが出てしまいます。 ``` func load() -> Bool { let userDefaults: UserDefaults = UserDefaults.standard contentsArray_ = userDefaults.array(forKey: "contentsArray") as! [ROContents] return true } ``` こちらも変更する必要がありますでしょうか。 宜しくお願いいたします。