В вашем методе func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int)
вы возвращаете значение, основанное на количестве if ... else
операторов. Они могут охватывать все ваши возможные сценарии, но компилятор не может вывести это и может увидеть возможность, когда все четыре проверки не пройдены, и поэтому значение не возвращается.
Существует несколько подходов к исправлению этого:
- после последнего
if
вставил роковую ошибку для сбоя
//cut earlier code for brevity
else if categorySC.isEnabledForSegment(at: 4) {
return jobsSonstiges.count
}
fatalerror("Invalid segment logic")
}
Возвращает случайное число, исходя из того, что, если ваша логика верна, поток кода никогда не должен заходить так далеко:
//cut earlier code for brevity
else if categorySC.isEnabledForSegment(at: 4) {
return jobsSonstiges.count
}
return 999
}
Пропустить последнюю проверку
if
, исходя из того, что это единственное возможное оставшееся значение, и просто вернуть значение:
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if categorySC.isEnabledForSegment(at: 1) {
return jobsHaus[row]
}else if categorySC.isEnabledForSegment(at: 2) {
return jobsGarten[row]
}else if categorySC.isEnabledForSegment(at: 3) {
return jobsBetreuung[row]
}else {
return jobsSonstiges[row]
}
}
Мои предпочтения, по крайней мере во время разработки, будутдля варианта 1, чтобы я выяснил, допустил ли я логическую ошибку.