回答編集履歴
2
error != nil は正常系なので判定修正
answer
CHANGED
@@ -25,7 +25,7 @@
|
|
25
25
|
本筋とは関係ないですが、 response!.routes.isEmpty の `!` でエラーになる可能性がありますので以下のように `!` を使わずに書くほうが良いです。
|
26
26
|
|
27
27
|
```swift
|
28
|
-
if error
|
28
|
+
if error == nil {
|
29
29
|
return
|
30
30
|
}
|
31
31
|
guard let response = response else {
|
1
エラーとなっていた原因が間違っていたので修正
answer
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
```swift
|
4
4
|
let directions = MKDirections(request: myRequest)
|
5
|
-
directions.calculate {
|
5
|
+
directions.calculate(completionHandler: {(response, error) -> Void in
|
6
6
|
_ = response!.routes.count
|
7
7
|
if (error != nil || response!.routes.isEmpty) {
|
8
8
|
return
|
@@ -13,11 +13,11 @@
|
|
13
13
|
}
|
14
14
|
```
|
15
15
|
|
16
|
-
エラーになっていた原因は、 `
|
16
|
+
エラーになっていた原因は、 `as! MKDirectionsHandler` にあると思います。
|
17
|
-
`
|
17
|
+
`(response:MKDirectionsResponse!, error:NSError!) -> Void in` の書き方だと handler の型に反ってないため実行時エラーが起きているようです。
|
18
|
+
おそらく Xcode のエラーででてくる補完を利用したと思うのですが、あれはあまりアテにしてはいけません。
|
18
19
|
|
19
|
-
また、 `MKDirectionsHandler`
|
20
|
+
また、 `MKDirectionsHandler` は `directions.calculate { response, error in` のようにもアクセスできますので、一般的にはこう書きます。
|
20
|
-
|
21
21
|
この書き方は Trailing Closure というのですが、最初のうちは深く考えずにこういう風に書ける記法があると思えば問題ないと思います。 [[Swift] Closureについてメモ \- Qiita](https://qiita.com/edo_m18/items/1d93af7de75c6d415f19#trailing-closures)
|
22
22
|
|
23
23
|
---
|