【问题标题】:How to call a method defined in a class extension from parent class swift [closed]如何从父类swift调用类扩展中定义的方法[关闭]
【发布时间】:2019-09-09 14:14:29
【问题描述】:

在 Swift 中从父类调用类扩展方法是一种好的做法/可能吗?我得到编译错误说 ParentClass 没有成员。扩展中看不到功能?

class ParentClass: NSObject {   

   public func doingManyThings() {
      doSomething() // Error: Value of type ParentClass has no member 'doSomething'
   }
}

在不同的 swift 文件中

extension ParentClass {
   func doSomething {
     print("this will do something")
   }
}

【问题讨论】:

  • 当然有可能......关于作为“良好实践”,我认为它可以解释。 BTW 使用 ParentClass 在您的问题中有点模棱两可,因为您的示例中不涉及继承。
  • 冒号是干什么用的?问题是什么?这就是你的代码无法编译的原因吗?是冒号。否则没有问题。
  • 感谢 cmets。缺少包含扩展名的 swift 文件的目标成员身份。

标签: swift class extension-methods


【解决方案1】:
class A {
    func aMethod() {
        extensionMethod()
    }
}

class B: A {
    func bMethod() {
        extensionMethod()
    }
}

extension A {
    func extensionMethod() {
        print("totally possible")
    }
}

B 类将继承 A 类方法,即使通过扩展, 但是 A 类不会接收 B 类扩展方法。

【讨论】:

  • 如果不解释代码以及它如何回答问题,这个答案并不是很有用
  • 感谢 Itamar - 我得到一个编译错误 - 请参阅上面的编辑
  • 您的扩展中的 doSomething 方法缺少“()”。不需要那个 NSObject 继承。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-05
  • 2012-02-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多