如何在swift 3中获取发件人的身份

时间:2016-10-14 14:55:15

标签: ios swift swift3

从swift 3开始,一些AnyObject类型被设置为Any。 但是我似乎无法访问发件人标签。

我第一次

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if (saveButton === sender) {
        let name = nameField.text ?? ""
        program = Program(id: -1, name: name, type: capsulesTypes![typeSelected], planning: planningString, date: timePicker.date.timeIntervalSince1970, intensity: Int(intensitySlider.value), enabled: false)
        sendProgramToAPI(program!)
    }

当发件人是AnyObject时,它在Swift 2中运行良好。但是现在条件总是错误的。所以我尝试使用标签。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (saveButton.tag == sender.tag) {
    let name = nameField.text ?? ""
    program = Program(id: -1, name: name, type: capsulesTypes![typeSelected], planning: planningString, date: timePicker.date.timeIntervalSince1970, intensity: Int(intensitySlider.value), enabled: false)
    sendProgramToAPI(program!)
}

但我有一个错误说任何?没有会员标签。标签在空间和时间上基本上都会丢失。

是否有想法以某种方式识别发件人?

2 个答案:

答案 0 :(得分:4)

您需要投射发件人的类型。如果您确定发件人始终是UIButton,则可以执行以下操作:

if saveButton.tag == (sender as! UIButton).tag {

或者,如果您不想使用tag属性,这也应该有效:

if saveButton == (sender as! UIButton) {

希望有所帮助:)

答案 1 :(得分:0)

你的第一条路很棒。要使用它,只需转回AnyObject:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if (saveButton === sender as AnyObject) {