teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

分かりやすいように書き換えた

2017/11/17 03:14

投稿

MasakiHori
MasakiHori

スコア3391

answer CHANGED
@@ -1,14 +1,13 @@
1
- エラー分かりにくいのですが、
1
+ このエラー分かりにくいのですが、`Optional`型にも同名の`map`関数があり、そちらが使われています。
2
2
 
3
+ 以下のように`?`を付けてoptional chainにすることで Arrayの方のmapが使われます。
4
+
3
5
  ```swift
4
- let area = value?["area"] as? [[String: Any]]
6
+ let area = value?["area"] as? [[String: Any]] // キャストする型を明示
5
- let arreaNameList = area?.map{ $0["name"] as! String }
7
+ let arreaNameList = area?.map{ $0["name"] as! String } // オプショナルチェインに
6
8
  ```
9
+ ----
7
10
 
8
- `Optional`型にも同名の`map`関数があり、`?`を付けていないのでそちらが選ばれています。
9
-
10
-
11
-
12
11
  ちなみに`Optional`型の`map`関数はnilでない時のみ引数の関数を実行します。
13
12
 
14
13
  ```swift

1

抜けがあったので修正

2017/11/17 03:14

投稿

MasakiHori
MasakiHori

スコア3391

answer CHANGED
@@ -1,7 +1,7 @@
1
1
  エラーが分かりにくいのですが、
2
2
 
3
3
  ```swift
4
- let area = value?["area"]
4
+ let area = value?["area"] as? [[String: Any]]
5
5
  let arreaNameList = area?.map{ $0["name"] as! String }
6
6
  ```
7
7