swiftの勉強で書籍のサンプルを動かしているのですが、
swift
1struct Item{ 2 3 let id:Int 4 5 let title:String 6 7 8 init?(dictionary:[String:Any]){ 9 10 guard let id=dictionary["id"] as? Int,let title=dictionary["title"] as? String else{ 11 12 return nil 13 14 } 15 16 self.id=id 17 18 self.title=title 19 20 } 21 22 23} 24 25 26let dictionaries:[[String:Any]]=[ 27 28 ["id":1,"title":"abc"], 29 30 ["id":2,"title":"def"], 31 32 ["title":"ghi"], 33 34 ["id":4,"title":"jkl"], 35 36] 37 38 39for d in dictionaries{ 40 41 if let item=Item(d:Dictionary){ 42 43 print(item) 44 45 }else{ 46 47 print("エラー:辞書(d)からItemを生成できません") 48 49 } 50 51}
上記サンプルを実行したところ、
if let item=Item(dictionary:Dictionary){
の行で、
main.swift:23:33: error: cannot convert value of type 'Dictionary<_, _>.Type' to expected argument type '[String : Any]' if let item=Item(dictionary:Dictionary){ ^~~~~~~~~~
上記のようなエラーが出ました。変数dictionariesは、「[String:Any]を要素に持つ配列」として型を
指定していますので、その要素一つ一つをfor文でイニシャライザの引数に渡すのは問題無いような気がするのですが、原因がわかりません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/16 01:40