Swift 错误 - 方法不覆盖其超类中的任何方法

Posted

技术标签:

【中文标题】Swift 错误 - 方法不覆盖其超类中的任何方法【英文标题】:Swift Error - Method Does not override any method from its superclass 【发布时间】:2018-03-22 14:27:46 【问题描述】:

我遇到了一个问题,当我试图重写一个函数时,它告诉我超类中没有方法。子类在 XCTest 中。当我在常规项目中进行子类化时,它可以正常工作,但 XCTest 由于某种原因无法正常工作下面是代码

超类

class BackupServerCell: UITableViewCell 
    @IBOutlet var serverNameLabel: UILabel!
    @IBOutlet var serverDescriptionLabel: UILabel!

    func configCell(with server: VeeamBackupServer) 

    
 

子类 - 位于 XCTest 文件中

class MockBackupServerCell : BackupServerCell 
    var configCellGotCalled = false

    override func configCell(with server: VeeamBackupServer) 
        configCellGotCalled = true
    

【问题讨论】:

尝试清理项目,然后构建并运行,然后再次运行测试 【参考方案1】:

当您处理测试目标时,有时需要导入您的主项目。

假设您的项目名为“MyAwesomeProject”,只需在您的测试文件中添加这一行:

@testable 导入 MyAwesomeProject

要获得这样的东西:

import XCTest
@testable import MyAwesomeProject

class TestStaticQueries: XCTestCase 
    // Add your test methods here.
 

【讨论】:

我确实有这个在我班上名列前茅。奇怪的是,当我开始键入时,自动完成功能会正确放置。但是在我输入之后就会发生编译器错误。 @MatthewWandell,嗯...我建议您的最后一件事是尝试将您的测试目标添加为 BackupServerCell 类目标成员资格的成员。【参考方案2】:

@DDelforge,部分正确。我必须将 BackupServerCell 类添加到测试目标。不知道为什么这个类是不同的,但是嘿,它有效。

谢谢大家

【讨论】:

将生产代码添加到测试目标是错误的。这表明测试目标没有正确链接到您的生产目标。

以上是关于Swift 错误 - 方法不覆盖其超类中的任何方法的主要内容,如果未能解决你的问题,请参考以下文章

方法不会覆盖其超类 swift 3.0 错误中的任何方法 [重复]

supportedInterfaceOrientations 方法不会覆盖其超类中的任何方法

覆盖 UICollectionView 的 UIPanGestureRecognizer

从Swift 3.2迁移到Swift 4我使用autosavesInPlace收到错误

覆盖 touchesBegan:错误 - 方法不会覆盖超类中的任何方法

Java继承方法隐藏(覆盖)