Commit 8fcc9797 by Demid Merzlyakov

Fix crash in TodayDayTimesCell.

parent f39d9614
...@@ -55,40 +55,40 @@ class TodayDayTimesCell: UITableViewCell { ...@@ -55,40 +55,40 @@ class TodayDayTimesCell: UITableViewCell {
public func configure(with location: Location) { public func configure(with location: Location) {
let maxNumberOfItems = 4 let maxNumberOfItems = 4
guard !location.dayTimeForecast.isEmpty else {
return
}
var validDayTimeWeather = [DayTimeWeather]() var validDayTimeWeather = [DayTimeWeather]()
for index in 0..<location.dayTimeForecast.count { for dayTimeWeather: DayTimeWeather in location.dayTimeForecast {
if location.dayTimeForecast[index].date >= Date() { if dayTimeWeather.date >= Date() {
validDayTimeWeather.append(location.dayTimeForecast[index]) validDayTimeWeather.append(dayTimeWeather)
if validDayTimeWeather.count == maxNumberOfItems {
break
} }
} }
if validDayTimeWeather.isEmpty {
return
} }
if stackView.arrangedSubviews.isEmpty { var currentValidWeatherIndex = 0
for index in 0..<maxNumberOfItems {
let view = DayTimeView(dayTimeWeather: validDayTimeWeather[index],
withSeparator: index != maxNumberOfItems - 1)
stackView.addArrangedSubview(view)
}
stackView.layoutIfNeeded()
return
}
if stackView.arrangedSubviews.count == maxNumberOfItems {
for (index, arrangedSubview) in stackView.arrangedSubviews.enumerated() { for (index, arrangedSubview) in stackView.arrangedSubviews.enumerated() {
// Configure existing views
if currentValidWeatherIndex < validDayTimeWeather.count {
guard let dayTimeView = arrangedSubview as? DayTimeView else { guard let dayTimeView = arrangedSubview as? DayTimeView else {
continue continue
} }
dayTimeView.configure(with: validDayTimeWeather[currentValidWeatherIndex])
dayTimeView.configure(with: validDayTimeWeather[index]) currentValidWeatherIndex += 1
}
else {
// Remove excessive views
arrangedSubview.removeFromSuperview()
} }
} }
// Add new views if needed.
while currentValidWeatherIndex < validDayTimeWeather.count {
let isLastItem = currentValidWeatherIndex == validDayTimeWeather.count - 1
let view = DayTimeView(dayTimeWeather: validDayTimeWeather[currentValidWeatherIndex],
withSeparator: !isLastItem)
stackView.addArrangedSubview(view)
currentValidWeatherIndex += 1
}
stackView.layoutIfNeeded()
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment