Using GLKMath from GLKit in Swift
frameworks, glkit, ios, swift
Solution
Swift has added union support in version 1.2. The fields in imported unions are read-only, even if declared with `var`, but can be passed to and from C functions as necessary.
The release notes for Swift 1.2 imply that the fields may not be accessible at all, but they are still readable for at least the `GLKit` types:
Swift can now partially import C aggregates containing unions, bitfields, SIMD vector types, and other C language features that are not natively supported in Swift. The unsupported fields will not be accessible from Swift, but C and Objective-C APIs that have arguments and return values of these types can be used in Swift. This includes the Foundation `NSDecimal` type and the `GLKit GLKVector` and `GLKMatrix` types, among others.
Problem
So I'm using a book called iOS Games by tutorials from Ray Wenderlich and trying to utilize some of the objective-C code found there to make the accelerometer control of a character in my game work. Instead of Objective-C though, I want to use Swift. I ran into an issue when trying to create a var of type GLKVector3, which represents a 3D vector. When I type in: ``` var raw:GLKVector3 = GLKVector3Make(irrelevant stuff) ``` I get the following error: use of module GLKVector3 as type. I have an import at the top of my swift file for GLKit: ``` import GLKit ``` Any ideas how I can get the functionality from the GLKMath files to use in my program?