我创建了一个Swift框架,只是一个简单的测试。
Swift文件(F1.swift)代码:
public class F1{
public init(){
print("inited")
}
public func call(){
print("called")
}
}
然后,我构建了框架,并将其导入另一个项目。
我试着这样使用它:
import F1
<{1}}的{{1}}中的:
viewDidLoad
F1.framework被拖下:
我也可以在下面看到它:
XCode“反应”:UIViewController
语句没有问题。
我确实收到了实例化类的错误:
无法调用非功能模块的值......
我错过了什么吗?
[更新]基于一些在线资源和其他一些测试,我认为问题在于构建设置:例如。 仅构建活动架构可能会涉及,但理解如何以及为什么会很有趣。
找到最小样本Xcode项目here。
答案 0 :(得分:0)
使用您发布的代码可在此处获得预期结果:
inited
called
答案 1 :(得分:-1)
在您的示例中,您已将模块F1
中的单个类命名为与模块相同的名称,即F1
。很可能Swift无法区分模块命名空间和模块中类的实际名称,因此当您只编写F1
时,Swift可能会推断它是一个显式的命名空间注释;引用名称空间F1
(由您导入的模块F1
提供)。命名空间当然不能被视为一种类型,这可以解释您提示的错误消息([强调我的])
无法调用非功能'模块的值...'
您可以通过在调用中包含模块名称空间及其(单个)类类型来显式调用类F1
的模块F1
的初始化程序来测试此理论:
var c = F1.F1()