Проблема в конструкции вашего if component == 0
блока. Если страна не является ни США, ни Канадой, возврата нет. Вы можете знать, что строка может содержать только одно из этих двух значений, но компилятор этого не делает.
Самое простое решение - сделать значение по умолчанию return
безусловным. Таким образом, если предыдущий return
не был выполнен, вы вернете значение по умолчанию.
func pickerView(_ pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? {
let dummyString = "Dummy String"
if component == 1 {
return NSAttributedString(string: denomArray[row], attributes: [NSAttributedString.Key.foregroundColor: UIColor.yellow])
} else if component == 0 {
if issuerArray [row] == "US" {
return NSAttributedString(string: self.issuerArray[row], attributes: [NSAttributedString.Key.foregroundColor: BaseViewController.Flag.us.themeColor])
}
if issuerArray [row] == "Canada" {
return NSAttributedString(string: self.issuerArray[row], attributes: [NSAttributedString.Key.foregroundColor: BaseViewController.Flag.canada.themeColor])
}
}
return NSAttributedString(string: dummyString, attributes: [NSAttributedString.Key.foregroundColor: UIColor.red])
}