###前提・実現したいこと
今バスアプリの時刻表のアプリを作っているのですが、
現在時刻から一番近い時刻を表示させるプログラムを書いたのですが、その時刻が過ぎても一番近い時刻が表示されるので、時間が過ぎたら次に近い時刻が表示されるようにしたいのですが、ここから先どう書いたらいいのかがわかりません。是非アドバイスお願いします。
###該当のソースコード
swift3.0
1import UIKit 2import Foundation 3 4func result() { 5 6let timeFormatter = DateFormatter() 7timeFormatter.dateFormat = "HH:mm:ss" 8let nowString = timeFormatter.string(from: NSDate() as Date) 9let nowTime = timeFormatter.date(from: nowString)! 10let jikokuArray: [(String, String)] = [("次のバス発車時刻 AM","9:10:00"),("次のバス発車時刻 AM","9:50:00"),("次のバス発車時刻 AM","10:10:00"),("次のバス発車時刻 AM","10:50:00"),("次のバス発車時刻 AM","11:10:00"),("次のバス発車時刻 AM","11:30:00"),("次のバス発車時刻 AM","11:50:00"),("次のバス発車時刻 PM","12:10:00"),("次のバス発車時刻 PM","12:50:00"),("次のバス発車時刻 PM","13:10:00"),("次のバス発車時刻 PM","14:10:00"),("次のバス発車時刻 PM","15:10:00"),("次のバス発車時刻 PM","15:20:00"),("次のバス発車時刻 PM","15:50:00"),("次のバス発車時刻 PM","16:05:00"),("次のバス発車時刻 PM","16:42:00"),("次のバス発車時刻 PM","16:50:00"),("次のバス発車時刻 PM","16:55:00"),("次のバス発車時刻 PM","17:00:00"),("次のバス発車時刻 PM","17:05:00"),("次のバス発車時刻 PM","17:50:00"),("次のバス発車時刻 PM","18:05:00"),("次のバス発車時刻 PM","18:35:00"),("次のバス発車時刻 PM","18:50:00"),("次のバス発車時刻 PM","19:05:00"),("次のバス発車時刻 PM","19:35:00"),("次のバス発車時刻 PM","19:35:00"),("次のバス発車時刻 PM","19:50:00"),("次のバス発車時刻 PM","20:05:00"),("次のバス発車時刻 PM","20:35:00"),("次のバス発車時刻 PM","21:05:00") ] 11 12let intervalArray: [TimeInterval] = jikokuArray.map({(_, time) in 13 let diff = timeFormatter.date(from: time) 14 return abs(nowTime.timeIntervalSince(diff ?? nowTime)) // 注 15}) 16let minimumTime = intervalArray.min() ?? 0.0 17if let minIndex = intervalArray.index(of: minimumTime) { 18 print("\(jikokuArray[minIndex].0):\(jikokuArray[minIndex].1)") 19} else { 20 print("本日のダイヤは終了しました。") 21} 22} 23 24result()
###試したこと
最小値を変えたりしてみたのですが、全く動きが変わらずでした。
原因はif文にあるような気をするんでしょうが、どうなんでしょうか?
###補足情報(言語/FW/ツール等のバージョンなど)
swift 3.0
xcode 8.0
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/02 02:21
2016/12/02 03:43
2016/12/02 03:51
2016/12/02 10:35
2016/12/02 10:53