前提・実現したいこと
Structを使ってデータをUserDeafultsに保存しようとすると落ちる
発生している問題・エラーメッセージ
Attempt to insert non-property list object...
該当のソースコード
struct User: Codable { let name: String let subName: String let profile_image_url: String } var users: [User] = [] var random_users : [User] = [] // ランダムで100人に絞る self.random_users = self.users.shuffled().prefix(100).map{$0} // ↓だとエラー出ます // UserDefaults.standard.setEncoded(self.users, forKey: "UserList")
試したこと
https://teratail.com/questions/274938 の内容を参考に Structを Codable
に変更、Userdefaultsへの保存を
UserDefaults.standard.setEncoded(self.random_users, forKey: "userList")
に変更。
内容通りだとエラーが出て
UserDefaults.standard.set(self.random_users, forKey: "userList")
だと保存で落ちます
Userdefaultsにはカスタムクラスでは保存できません
は理解できました
保存するのでしたらNSCodingプロトコルに準拠させないといけません。
はよくわかっていません
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。