前提・実現したいこと
セグエで画面遷移したところに, UserDefaultsで保存したfavoriteList:[(annotationFav:MKAnnotation, circleFav:MKCircle)]から円の情報とピンの情報を取り出したいです.
遷移元のViewControllerでは,
// 円の情報を保持する var circleFav: MKCircle! // ピンの情報を保持する var annotationFav: MKAnnotation! // お気に入りの情報を一つにまとめるリスト var favoriteList:[(annotationFav:MKAnnotation, circleFav:MKCircle)] = [] // お気に入りの保存値を扱うキーを設定 let key = "favorite_value" // UserDefaultsのインスタンスを生成 let defaults = UserDefaults.standard ----- //値入力後に defaults.set(favoriteList, forKey: key)
でデータをセットしています.
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
遷移後の別のViewControllerではこのように記述して,UserDefaultsからリストを取り出そうとしましたが,
// お気に入りの保存値を扱うキーを設定 let key = "favorite_value" override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. // TableViewのdataSourceを設定 tableView.dataSource = self // UserDefaultsの取得 let defaults = UserDefaults.standard // UserDefaultsから取り出し var favoriteList:[(annotationFav:MKAnnotation, circleFav:MKCircle)] = defaults.array(forKey: key)! }
Cannot assign value of type '[Any]' to type '[(annotationFav: MKAnnotation, circleFav: MKCircle)]'
とエラーが発生します.
どのようにすればリストの中身を扱えるようになるでしょうか?
試したこと
アンラップをしようと思いましたが,この状態の配列にどのようにアンラップを行えば良いか分かりませんでした.
また,UserDefaultsでMKCircleやMKAnnotionなどをタプルで含む配列を扱うことができるかどうかも不明瞭です.
補足情報(FW/ツールのバージョンなど)
Swift5.3.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/18 01:03