快速重写函数错误

2024-05-22

我有一个结构:

struct ErrorResultType: ErrorType {
    var description: String
    var code: Int
}

和一个协议:

protocol XProtocol {
    func dealError(error: ErrorResultType)
}

现在我想扩展 UIViewController:

extension UIViewController: XProtocol {

    func dealError(error: ErrorResultType) {
        // do something 
    }
}

所以我可以继承它并重写该函数,例如:

class ABCViewController: UIViewController {

--->override func dealError(error: ErrorResultType) {
        super.dealError(error)
        // do something custom
    }
} 

但它出错了:Declarations from extensions cannot be overridden yet

这对我来说没有任何意义。当我全部更换时ErrorResultType with AnyObject,错误就不会再出现了。

我错过了什么吗?


目前扩展中的方法必须标记为@objc允许在子类中覆盖它。

extension UIViewController: XProtocol {

    @objc
    func dealError(error: ErrorResultType) {
        // do something
    }
}

但这要求方法签名中的所有类型都与 Objective-C 兼容,您可以使用ErrorResultType不是。 制作你的ErrorResultType不过,应该使用类而不是结构。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

快速重写函数错误 的相关文章

随机推荐

  • 装饰 Rails 中的属性

    我有一个name上的属性Person模型 每次我访问name属性 我想要name capitalize被退回 在模型内执行以下操作将不起作用 def name name capitalize end 那么还有什么选择呢 我建议您使用自定义格
  • 使用 jquery 删除输入占位符

    有谁知道如何使用 jquery 删除输入占位符 我想做的是如果其中之一inputbox得到一个值 所有输入框占位符都将被删除 有人知道该怎么做吗
  • Prettier vscode 扩展不支持 Django 模板标签 {% tag %}

    Prettier Visual Studio 代码扩展不支持 Django 模板标签 tag 现在我该如何解决这个问题 我是否必须禁用 html 文件的 Prettier 扩展 或者还有其他解决方案吗 github 中的问题 5581 不支
  • 从共享点下载文件

    我正在尝试从共享点下载文件 我有此代码并抛出错误代码 500 static void DownloadFile string serverFilePath Here goes my URL that open the file from a
  • 为什么 openSession 不起作用但 getCurrentSession 在 Spring Hibernate 中起作用

    我编写了一个示例 Spring Hibernate 应用程序 以了解 Spring Hibernate 集成的工作原理 这是我的 applicationContext xml
  • 如何从 Rails 项目中删除 gem?

    我正在尝试从我的项目中删除一个 gem 因此我进入了 gem 文件并将其注释掉 gem some gem gem gem I dont want gem another gem 然后我跑 bundle 为了检查宝石是否消失 我输入 bund
  • 如何在 iOS (safari) 中获取 mailto 链接以打开 Outlook 应用程序?

    我注意到 在使用 Outlook 应用程序且未配置本机邮件应用程序的 iPhone 用户上 当他们单击 mailto 链接时 系统会提示他们在 iOS 中创建新的电子邮件帐户 而不是打开 Outlook 应用程序 是否可以将 Outlook
  • 在 Grails 中创建一个新的资源包?

    我想创建另一个资源包来组织我的 Grails 应用程序 Grails 提供了一个 messages 资源包 我需要创建一个 myApp 资源包 如何创建新的资源包并使用 g message GSP 标记读取其属性 你必须创建一个beangr
  • 如何以编程方式禁用 元素上的自动选择?

    然后用户使用 TAB 或 SHIFT TAB 跳转 到某个文本框 并且该文本框恰好有一个值 那么该值将被自动选择 我想禁用此行为 我认为这可以在 focusin 事件处理程序内部完成 input text focusin function
  • 使用 ggplot 2 使用线条或线段将堆栈条形图与多个组连接起来

    我正在对一些患有某种疾病的患者进行一项研究 并在 3 个不同的时间点使用顺序量表评估功能状态 我想在这些时间点的堆叠条形图中连接多个组 我查看了这些主题 但尚未使用这些建议使其发挥作用 如何将线条放置在堆积条形图的边缘 https stac
  • 节点:以编程方式检查包的最新版本

    我希望我的节点包 在 npm 上发布 在新版本可用时提醒用户 如何以编程方式检查已发布软件包的最新版本并将其与当前版本进行比较 Thanks 您可以结合npmview https npmjs com package npmview 用于获取
  • Dart 如何模拟过程

    我如何去模拟一个过程 与函数相反 请参见here https stackoverflow com questions 23925384 dart mocking a function 例如 给定以下 typedef 和过程 typedef
  • 如何使用 SQL 对项目进行排序,然后按另一个条件再次排序

    我正在使用 MySQL 我想对记录进行排序 或者我想对记录进行分组 然后按另一个条件再次对其进行排序 例如我有 6 个项目 Names Group Jack G1 Dian G2 Emily G2 Dean G1 Teddy G2 Gabe
  • 如何在 Pygame 中将具有一定透明度的 PNG 位图传输到表面上?

    我试图将 PNG 图像传输到表面上 但图像的透明部分由于某种原因变成黑色 这是简单的代码 screen pygame display set mode 800 600 pygame DOUBLEBUF 32 world pygame Sur
  • SQL Server - 仅执行存储过程角色

    如何创建只能运行的自定义 SQL Server 数据库服务器角色SELECT查询和存储过程 这意味着 该角色的用户不允许执行自定义查询 但可以运行具有 CRUD 和 SysAdmin 语句的存储过程 UPDATES DELETES ALTE
  • 从 MySQL 将 500 万行加载到 Pandas 中

    我在 本地 网络上的 MySQL 数据库中有 500 万行 连接速度非常快 而不是在互联网上 与数据库的连接工作正常 但如果我尝试这样做 f pd read sql query SELECT FROM mytable engine inde
  • HashMap 的奇怪序列化行为

    考虑以下三个类 实体变压器包含一个关联的地图Entity用字符串 Entity是一个包含 ID 的对象 由 equals hashcode 使用 并且包含对实体变压器 注意循环依赖 一些包装器包含一个实体变压器 并维护一个 Map 关联En
  • 安装 OS X Mavericks 后使用 mkvirtualenv 时出现问题

    我最近安装了 OS X Mavericks 我可以访问之前创建的虚拟环境 但在创建新虚拟环境时遇到问题 Christophers MacBook Pro 2 christopherspears mkvirtualenv bottle tod
  • javascript + jquery + setinterval + 动画

    我在 setInterval 和 jquery animate 方面遇到问题 这是我的代码 function slides1 table agah1 animate left first1 slow table agah2 animate
  • 快速重写函数错误

    我有一个结构 struct ErrorResultType ErrorType var description String var code Int 和一个协议 protocol XProtocol func dealError erro