【问题标题】:Swift 3.0 Extension - Methods are not getting called in Child classSwift 3.0 扩展 - 在子类中没有调用方法
【发布时间】:2017-10-11 06:58:53
【问题描述】:

当我将代码从 swift 2.3 转换为 swift 3.0 时,我遇到了扩展实现问题。 问题陈述:-

1) 每个继承的类都要求实现协议

2) 无法调用已在 Extension 中实现的方法。

请查看以下代码以获得更多理解。

  protocol MyExtension {
        static func addTwoNumber(number1: Double, number2: Double)
    }

    extension MyExtension {
        static func addTwoNumber(number1: Double, number2: Double) {
          //implementation
      }

        static func subTractTwoNumbers(number1: Double, number2: Double) {
         //implementation
      }
    }

    internal class firstClass: MyExtension {
         static func multiplyTwoNumbers(number1: Double, number2: Double) {
        //implementation
        // if I call subTractTwoNumbers in this class it is giving me an error    
          subTractTwoNumbers(10, 10)
        //and asking me to implement protocol method as well ie 
        //static func addTwoNumber(number1: Double, number2: Double)
      }
    }

请告诉我,我做错了什么。

【问题讨论】:

  • 始终使用 xcode 建议来使用属性和方法。正确编写 func 可能存在问题。

标签: ios swift swift3 extension-methods


【解决方案1】:

在扩展中编写如下函数

 extension MyExtension {


     func addTwoNumber(number1: Double, number2: Double) {
          //implementation
      }

        func subTractTwoNumbers(number1: Double, number2: Double) {
         //implementation
      }
        }

【讨论】:

    【解决方案2】:

    替换这个

    subTractTwoNumbers(10, 10)
    

    subTractTwoNumbers(number1: 10, number2: 10) // you must have to pass the argument lables name to call the function.
    

    如果您不想要参数的自变量标签,请为该参数写下划线 (_) 而不是显式自变量标签

    static func subTractTwoNumbers(_: Double, _: Double) {
     //implementation
    }
    

    另外,你在末尾多写了一个花括号。

    【讨论】:

    • 感谢您的回复。上面的代码只是解释我的问题的原型。我有问题。我的原型方法的返回类型是Request,我在扩展中实现的方法是DataRequest。这就是它向我显示错误的原因。
    • 此代码不会产生协议实现错误。很高兴听到您遇到问题。并且总是放相同的原型代码。
    猜你喜欢
    • 2020-01-30
    • 2017-11-25
    • 2014-11-22
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多