无法将 pickerView titleForRow 设置为(字符串?,字符串?)

Can't set pickerView titleForRow as (String?, String?)

我正在使用 CoreData,我试图在我的 UIPickerView 中有 2 个不同的列,其中包含 Stores 和 Item Type

当我 运行 它时,项目是 "there" 但它们显示为“?”

这是我的 titleForRow 函数的代码:

   func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> (String?, String?) {
    //title
    let store = stores[row]
    let itemType = itemTypes[row]

    // select store out of array of stores
    return (store.name, itemType.type)
}

需要注意的是 Xcode 给我一个警告说:

Instance method 'pickerVIew(titleForRow:forComponent:)' nearly matches optional requirement 'pickerView(titleForRow:forComponent:)' of protocol UIPickerView

您可以 return 仅 String 类型,而不是元组。如果要添加两列,需要设置

pickerView.numberOfComponents = 2

并检查 component 参数,如:

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    return component == 0 ? stores[row].name : itemTypes[row].type
}