【问题标题】:Swift: overriding method with selector has incompatible typeSwift:使用选择器的覆盖方法具有不兼容的类型
【发布时间】:2014-10-20 00:18:08
【问题描述】:

我已经在 Objective-C 中声明了一个类方法:

+ (id) someFunction:(NSDictionary *)param;

当我子类化该类并在 Swift 中使用以下方法覆盖此方法时:

override class func someFunction(param : NSDictionary) -> AnyObject?

我得到错误:

选择器“someFunction:”的覆盖方法具有不兼容的类型 '(NSDictionary) -> AnyObject?'

如何正确覆盖该方法?

【问题讨论】:

    标签: objective-c swift


    【解决方案1】:

    当我尝试从 Swift 的其他地方自动完成该类函数时,Xcode 告诉我 param[NSObject: AnyObject]!,这使得方法声明工作:

    override class func someFunction(param: [NSObject: AnyObject]!) -> AnyObject? {
        return "Foo"
    }
    

    这可能是一个编译器错误,因为我很确定它应该正确地桥接到NSDictionary!(它似乎是桥接一种方式,但不是另一种,或其他什么)。

    【讨论】:

    • 哇,谢谢!我根本没有得到任何自动完成的建议,但你的确实有效。转换参数没问题,所以这是我可以忍受的编译器错误。
    • 确实似乎是某种编译器错误,我自己也遇到了很多
    猜你喜欢
    • 1970-01-01
    • 2015-04-30
    • 2011-03-09
    • 2014-04-18
    • 2018-07-26
    • 1970-01-01
    • 2012-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多