我有一个Xcode项目,它有一个主应用程序和一个名为Networking
的Swift框架。现在,我想将Networking
模块拆分为一个子模块,该子模块只包含一些实用程序类,以便只有在显式导入时,它们才可用于主应用程序。所以我想实现的用途是
import Networking
import Networking.Utils
// Public class in Networking
MyNetworking.doStuff()
// Public class in Networking.Utils
// Should not compile unless Networking.Utils is imported
MyNetworkingUtils.doSomething()
因此,我的模块具有以下文件结构
.
├── Core
│ ├── MyNetworking.swift
│ └── Networking.h
├── Info.plist
├── Utils
│ ├── NetworkingUtils.h
│ └── Utils.swift
└── module.modulemap
我用以下内容创建了一个自定义module.modulemap
:
framework module Networking {
umbrella header "Networking.h"
export *
module * { export * }
explicit module Utils {
header "NetworkingUtils.h"
}
}
这创建了Networking
模块,但问题是Utils
类在主Networking
模块中可用。
问题是,我如何在模块映射中指定哪些Swift文件(最好是子文件夹(属于哪个module
。
Networking
只有Swift文件,所以伞形.h
文件基本上是空的。
这里有两个不同的模块似乎是一个不错的选择:Networking和NetworkingUtils(第二个模块可能依赖于第一个模块(。