【发布时间】:2017-05-09 17:39:54
【问题描述】:
环境:
Swift >=2.3,Swift 应用中的 Swift 框架
设置:
- 一个带有模块名称的 Swift 动态框架,比方说
APIService.framework。 - 它有一个
public class APIService.swift和它 具有静态功能。 它还有另一个
public class Item.swift。一个使用
APIService.framework的快速应用程序- App 可以使用类似
APIService.function()的框架 - App 还有一个
class Item.swift
如果 App 需要引用框架的 Item 类,它必须做 APIService.Item 但由于 APIService 是框架内的一个类,编译器总是试图在 APIService 类而不是 APIService 模块中查找属性,因此抛出一个说错了
'Item' is not a member type of 'APIService'
可能的解决方案:
- 将框架的模块名称更改为类以外的名称 姓名。
- 将类名称更改为模块名称以外的名称。
- 在指向
的 APIService 类中放置一个“Item”静态属性 框架中的项目类。
所有这些都只是变通方法,真正的问题仍然是编译器无法区分模块名称和类名称。我们在 Swift 中有什么可以让我说 "Don't look into the ModuleName.swift, instead look into the whole Module" 的吗?
【问题讨论】:
标签: swift module namespaces