Leave a rating/review
Your challenge is to handle one more error. What if the server stops while you’re in the live ticker view?
Is your app still running from episode 5? To make sure the prices are updating, tap Live ticker again. In Terminal, press Control-C to stop the server.
In the app, there’s no error message. As far as the app is concerned, the async sequence task completed and its job is done.
The app needs to reset tickerSymbols when the async sequence ends, then navigate back to SymbolListView. Remember to restart your server.
Your challenge is to handle one more error. What if the server stops while you’re in the live ticker view? If the async sequence ends, the for loop in startTicker(_:) exits. So add code after the for loop to set tickerSymbols to an empty array. Remember to use MainActor.
In TickerView, add a view modifier that keeps track of the number of elements in tickerSymbols and dismisses the view if this value resets to 0. Use the presentationMode environment property already included in TickerView.
Good luck!
Welcome back! Hopefully you had success with handling this error. But let’s go over how I did it, and get on the same page.
Reset tickerSymbols array
In LittleJohnModel, in startTicker, below the for loop, I added this code:
await MainActor.run {
tickerSymbols = []
}
In TickerView, I added this below the task closure:
.onChange(of: model.tickerSymbols.count) { newValue in
if newValue == 0 {
presentationMode.wrappedValue.dismiss()
}
}
Check your server’s running, then build and run, select some stocks, tap Live ticker, then stop your server.
Now the app automatically dismisses the live ticker screen and returns to the symbol list. Remember to restart your server.