环境:
Swift>=2.3,Swift应用程序中的Swift框架
设置:
例如,一个具有模块名称的快速动态框架APIService.framework
它有一个public class APIService.swift
并且
具有静态功能。
它还有一个public class Item.swift
。
使用APIService.framework
应用程序可以使用框架,如APIService.function()
应用程序还有一个class Item.swift
如果应用程序需要引用框架的项类,它必须执行APIService.Item
操作,但是由于apiservice是框架内的一个类,编译器总是试图在apiservice类内而不是在apiservice模块内查找属性,因此抛出一个错误
'Item' is not a member type of 'APIService'
可能的解决方案:
将框架的模块名更改为类以外的其他名称
姓名。
将类名更改为模块名以外的其他名称。
将“item”静态属性放入指向
框架中的项类。
所有这些都只是解决方法,真正的问题是编译器无法区分模块名和类名。我们有没有什么可以让我迅速说出来的?
最佳答案
基于this answer,您似乎可以直接从模块导入单个类型来解决此问题。
import class APIService.Item
然后,您可以直接引用
Item
而不会产生混淆。关键字(至少)在这种情况下起作用。