Swift:pickerView的结果具有与协议uipickerviewdelegate预期不同的可选性

时间:2015-11-06 18:32:14

标签: swift

我收到关于可选性的警告:

  

pickerView的结果具有与预期不同的选项   protocol uipickerviewdelegate。

协议似乎要求我返回一个隐式解包的可选String,但我不知道该怎么做。

import UIKit

class TimerViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate  {
  @IBOutlet var timerPickerView: UIPickerView!

  let timerPickerData = [Array(1...24), Array(1...60), Array(1...60)]

  ...

  func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {

    return String(timerPickerData[component][row])
  }

}

1 个答案:

答案 0 :(得分:3)

这是该委托方法的Swift签名:

optional public func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?

你可以在它的最后看到它应该返回一个可选字符串(String?),而不是像你一样隐式解包的可选字符串(String!)。因此,警告的原因是因为协议与您的实现之间的方法签名不同,特别是您将可选性从常规可选项更改为隐式展开的可选项。