尝试重新编写为Myo编写的Objective-C代码我遇到了GLKQuaternion类,这是一个联合,并且似乎不支持Swift(Using GLKMath from GLKit in Swift)。
我正在寻找的是解决这个问题的方法。也许在ObjectiveC中完成了Math的混合应用程序,因此我可以访问这些属性。我有什么选择?
答案 0 :(得分:2)
使用桥接文件结束并创建一个小的包装层,以允许我从Swift访问我想要的数据。我将其称为polyfill,类似于我们在网络上提供的功能,以增强旧浏览器的功能。
code is available on github。特别是this commit会引起人们的兴趣,因为它显示了需要做的事情。
<强> Polyfill.h 强>
@interface OrientationData: NSObject
@property (nonatomic) TLMAngle *pitch;
@property (nonatomic) TLMAngle *yaw;
@property (nonatomic) TLMAngle *roll;
@end
@implementation OrientationData
@end
@interface GLKitPolyfill: NSObject
+ (OrientationData *) getOrientation:(TLMOrientationEvent *)orientationEvent;
@end
<强> Polyfill.m 强>
+ (OrientationData *) getOrientation:(TLMOrientationEvent *)orientationEvent {
TLMEulerAngles *angles = [TLMEulerAngles anglesWithQuaternion:orientationEvent.quaternion];
OrientationData *result = [OrientationData new];
result.pitch = angles.pitch;
result.yaw = angles.yaw;
result.roll = angles.roll;
return result;
}
<强> ViewController.swift 强>
let angles = GLKitPolyfill.getOrientation(orientationEvent)
let pitch = CGFloat(angles.pitch.radians)
let yaw = CGFloat(angles.yaw.radians)
let roll = CGFloat(angles.roll.radians)
Apples Mix & Match guide提供了有关如何使Obj-C与Swift一起使用的好提示,反之亦然。