【问题标题】:Swift - Type has no memberSwift - 类型没有成员
【发布时间】:2016-09-18 05:17:01
【问题描述】:

我有一个名为APIGroup 的基本类,其存在的唯一目的是子类化(除了子类访问的某些static 属性之外,它[尚未] 用于其他任何东西)。它看起来有点像这样:

public class APIGroup {
    public static let someProperty : String = "I am a property!"
}

我有一个子类Track,它定义了一个type方法search如下:

public class Track : APIGroup {
    public static func search(name: String) -> Void {
        print("Track search initiated. Name: \(name)")
        print("And the property is: \(someProperty)")
    }
}

这两个类在同一个模块的不同文件中定义。在另一个目标中,我导入模块并尝试调用:

import MyModule

MyModule.Track.search("testing...")

但这会抛出:Type 'Track' has no member 'search'。我做错了什么?

【问题讨论】:

  • 您是否将包含此方法的文件添加到您正在测试的目标中? (即在 Xcode 中,您必须在文件检查器中选中 Target Membership 下的框,以便将文件作为目标的一部分包含在内)
  • 是的,我做到了。我可以访问MyModuleMyModule.Track
  • @Sulthan 要是编码这么简单就好了……
  • 会不会与另一个类Track发生名称冲突?

标签: swift class static-methods public subclassing


【解决方案1】:

将此代码放在 Playground 中对我来说很好:

import Foundation

public class APIGroup {
    public static let someProperty : String = "I am a property!"
}

public class Track : APIGroup {
    public static func search(name: String) -> Void {
        print("Track search initiated. Name: \(name)")
        print("And the property is: \(someProperty)")
    }
}

Track.search("testing...")

如果它们在同一个模块中,则不需要导入或使用模块名称。

【讨论】:

  • 它也适用于我,但请参阅我所说的不同文件/模块。
  • 其实它只是随机开始工作。我什至没有改变一切,我只是在几个小时后尝试重新编译。不过,感谢您的帮助!
猜你喜欢
  • 2022-11-13
  • 1970-01-01
  • 1970-01-01
  • 2021-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多