You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS开发:-[EggTimer.ViewController hardness:] 无法识别选择器错误求助

问题核心原因

这个错误的本质是按钮的IBAction绑定与代码中的方法不匹配:错误信息里的hardness:是系统尝试调用的方法名,但你的代码里实际定义的IBAction方法是hardnessSelected(_:),两者名称不一致,导致系统找不到对应方法,抛出未识别选择器的异常。

两种修复方案

方案一:更新Storyboard/XIB的按钮绑定

  1. 打开对应的Storyboard或XIB文件,找到煮蛋选项按钮
  2. 右键点击按钮,查看Sent Events下的Touch Up Inside绑定,你会发现它指向了一个不存在的hardness:方法
  3. 点击该绑定旁的×删除错误关联,重新拖拽绑定到代码中的hardnessSelected(_:)方法

方案二:修改代码方法名匹配现有绑定

如果不想改动Storyboard的设置,可以直接把代码中的方法名改成错误提示里的名称:

import UIKit

class ViewController: UIViewController {

    let eggTimes = ["Soft" : 5, "Medium" : 7, "Hard" : 12]

    
    @IBAction func hardness(_ sender: UIButton) {
        let hardness = sender.currentTitle!
        let result = eggTimes[hardness]!
        print(result)
    }
    
}
额外优化建议

避免使用强制解包!,防止空值导致崩溃,用可选绑定更安全:

@IBAction func hardnessSelected(_ sender: UIButton) {
    guard let hardness = sender.currentTitle, let result = eggTimes[hardness] else {
        print("无效的煮蛋硬度选项")
        return
    }
    print(result)
}

内容的提问来源于stack exchange,提问作者Apurvo Pal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 04:33:15