所以我正在使用一本名为iOS Games的书,来自Ray Wenderlich的教程,并试图利用那里找到的一些Objective-C代码来加速度计控制我游戏中的角色。而不是Objective-C,我想使用Swift。我在尝试创建一个GLKVector3类型的var时遇到了一个问题,它代表了一个3D矢量。当我输入时:
var raw:GLKVector3 = GLKVector3Make(irrelevant stuff)
我收到以下错误:
使用模块GLKVector3作为类型。
我在我的swift文件顶部有一个导入GLKit:
import GLKit
如何获取GLKMath文件中的功能以便在我的程序中使用?
答案 0 :(得分:8)
Swift在版本1.2中添加了联盟支持。导入联合中的字段是只读的,即使使用var
声明,但可以根据需要传入和传出C函数。
Swift 1.2的发行说明暗示这些字段可能根本无法访问,但至少GLKit
类型仍然可读:
Swift现在可以部分导入包含联合,位域,SIMD向量类型以及Swift本身不支持的其他C语言功能的C聚合。 Swift无法访问不受支持的字段,但可以在Swift中使用具有这些类型的参数和返回值的C和Objective-C API。这包括基金会
NSDecimal
类型以及GLKit GLKVector
和GLKMatrix
类型等。
答案 1 :(得分:3)
昨天(2015年2月8日)发布了Xcode 6.3 / Swift 1.2测试版,现在可以使用Swift的GLKit。
答案 2 :(得分:2)
在这里检查我的回购:https://github.com/noxytrux/SwiftGeom我实际上为此构建了一个完整的库,因此您不再被迫使用GLKit或等待Apple在swift中实现它。