マップアプリを作ってシミュレーター上ではうまく行っていた動作が実機確認をしたところエラーが出てうまく行きません。
AlamofireとSwiftyJsonを使ってAPIを叩いているのですがその中でエラーが発生しています。
Swift
1Alamofire.request(directionURL).responseJSON 2 { response in 3 4 if let Json = response.result.value { 5 let json = JSON(Json) 6 7 for i in (0..<100){ 8 if var minutestr = json["routes"][0]["legs"][0]["steps"][i]["duration"]["text"].string{ 9 if let range1 = minutestr.range(of: " mins") { 10 minutestr.removeSubrange(range1) 11 } 12 13 if let range2 = minutestr.range(of: " min") { 14 minutestr.removeSubrange(range2) 15 } 16 17 let minute:Int = Int(minutestr)! //ここでエラー 18 if(minute<=5){ 19 time.append(minute) 20 }else if(minute>5){ 21 if let points = json["routes"][0]["legs"][0]["steps"][i]["polyline"]["points"].string{ 22 var lat5minute:Double = 0.0 23 var lon5minute:Double = 0.0 24 time.append(5) 25 26 var remtime:Int = minute-5 27 (lat5minute,lon5minute) = self.zahyoureturn5minute(points: points,key: 1) 28 intervalcoord[0].append(lat5minute) 29 intervalcoord[1].append(lon5minute) 30 for i in(1..<100){ 31 if(remtime>5){ 32 time.append(5) 33 remtime -= 5 34 (lat5minute,lon5minute) = self.zahyoureturn5minute(points: points, key: i+1) 35 intervalcoord[0].append(lat5minute) 36 intervalcoord[1].append(lon5minute) 37 let position = CLLocationCoordinate2DMake(lat5minute, lon5minute) 38 let marker = GMSMarker(position: position) 39 marker.icon = GMSMarker.markerImage(with: .black) 40 marker.map = googleMap 41 42 43 }else if(remtime<=5){ 44 time.append(remtime) 45 break 46 } 47 48 } 49 50 } 51 52 } 53 54 }
エラー内容はFatal error: Unexpectedly found nil while unwrapping an Optional
と出ています。これについて調べると予期しないnil値が出た時のエラーだと分かりました。
minutestrの値がシミュレーターではnilでは無かったのに実機に写したらnilになった原因は何なのでしょうか。御教授願います。
本来ならminutestrにはString型で数+minと入ります。(例: 5min)
ここがnil値になるということは実機ではAPIが使えていないということになるのでしょうか
minutestrをシミュレータで出力した場合
minstr 3
minstr 1
minstr 2
minstr 1
minstr 10
minstr 2
minstr 5
minutestrを実機で出力した場合
minstr 3分
(lldb)
と最初の以降が拾えていないようです。
回答1件
あなたの回答
tips
プレビュー