質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1390閲覧

構造体の配列をUserDefaultに保存したい

hodoru3sei

総合スコア284

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2021/02/19 15:49

困っていること

構造体をUserDefaultに保存するこちらの記事を参考に単体の構造体をUserDefaultに保存することはできたんですが、配列で構造体を保持してUserDefaultに保存することができません

コード

コードはそのまま基本的に記事のものをお借りして配列でできないか試しています

構造体

struct Yasai: Codable { let name: String let price: Int }

保存

保存のところでencodeの中身を配列で保存したいので二次元配列にしたんですがだめでした(通常でも配列型式で渡すようです)

UserDefaults.standard.set(try? PropertyListEncoder().encode([[yasaiList]]), forKey:"yasai") UserDefaults.standard.synchronize()

取得部分

こちらもArray<yasaiList>のところを2次元配列にすればいけるのかと思うんですがArray<Array<yasaiList>>やArray<[yasaiList]>のような書き方をするとエラーになってしまってうまく取得することができませんでした。

if let data = UserDefaults.standard.value(forKey:"yasai") as? Data { let yasai = try? PropertyListDecoder().decode(Array<yasaiList>.self, from: data) print(yasai?.first) } else { print("失敗") }

配列の構造体をUserDefaultに保存する方法ご存知の方いたら教えてください、お願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MasakiHori

2021/02/20 02:15

「Array<Array<yasaiList>>やArray<[yasaiList]>のような書き方をするとエラー」 このエラーを書いてください
guest

回答1

0

ベストアンサー

json 形式の文字列でUserDefaultsに保存する以外に方法はありません。

投稿2021/02/19 16:45

Tetsukick

総合スコア297

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問