我的经验是,Swift 因此根本没有名称空间。在将我的一个应用程序从 Objective-C 转换成 Swift 的过程中,我创建了一个嵌入式框架,因为它实在是太简单太酷了。然而,导入框架会导入框架中的所有 Swift 内容——所以很快,又只有一个名称空间,而且是全局的。而且没有 Swift 头,所以你不能隐藏任何名字。
// Define your new class within its namespace
extension Profiles.ViewControllers {
class Edit: UIViewController {}
}
// Extend your new class to avoid the extra whitespace on the left
extension Profiles.ViewControllers.Edit {
override func viewDidLoad() {
// Do some stuff
}
}
配置文件/视图/编辑
extension Profiles.Views {
class Edit: UIView {}
}
extension Profiles.Views.Edit {
override func drawRect(rect: CGRect) {
// Do some stuff
}
}
var customController = UICollectionViewController() //your custom class
var uikitController = UIKit.UICollectionViewController() //class from UIKit
如何将它们与其他模块区分开来?
var customController = MyApp.UICollectionViewController() //your custom class
var uikitController = UIKit.UICollectionViewController() //class from UIKit
尽管可以使用框架和库来实现名称空间,但是最好的解决方案是使用 Swift Package Manager 来使用本地包。除了具有访问修饰符之外,这种方法还有其他一些好处。正如在 Swift Package Manager 中一样,文件是基于目录系统管理的,而不是它们的目标成员,因此您不必为团队合并中经常出现的冲突而苦恼。此外,不需要设置文件成员身份。