有没有办法在 Swift 中引用当前模块?

sak*_*sak 3 swift swift4

假设我正在编写一个 swift 模块,并且我想用一个已经存在的名称命名一个类型。如果名称来自另一个模块,则很容易。我可以只使用模块名称作为命名空间:

import Foundation

class MyClass {
    class Notification : Foundation.Notification { ... }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,有没有办法对同一模块中的类型做同样的事情?例如,我希望能够做这样的事情:

class Notification { ... }

class MyClass {
    class Notification : Module.Notification { ... }
}
Run Code Online (Sandbox Code Playgroud)

哪里Module.Notification是对上面声明的类型的引用。这样的事情可能吗?

Jos*_*ell 7

您需要使用模块的实际名称:

class Notification { ... }

class MyClass {
    class Notification : MyAmazingTwitterApp.Notification { ... }
}
Run Code Online (Sandbox Code Playgroud)

如果您在 Xcode 中工作,则默认为您的目标名称。在“包装”下有一个构建设置“产品模块名称”,可让您更改此设置。

如果您使用的是 Swift 构建系统,这当然是在您的清单文件中通过PackageDescription.