我一直在搞乱
swift并试图让Physicsworld工作.
这是我得到的错误
“架构i386的未定义符号:
“_OBJC_CLASS _ $_ SCNPhysicsWorld”,引自:
GameViewController.o中的__TFC3sk218GameViewController11viewDidLoadfS0_FT_T_
ld:找不到架构i386的符号
clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)
“
我认为它与链接或导入我不是的库有关,但我已经添加了我认为可以解决的所有内容(在游戏工具包的其他帖子中找到)有谁知道这可能是什么?谢谢.
解决方法
Obj-c /
Swift桥有一个错误.
添加以下类:
PhysWorldBridge.h
#import <Foundation/Foundation.h> #import <SceneKit/SceneKit.h>// @interface PhysWorldBridge : NSObject - (void) physicsWorldSpeed:(SCNScene *) scene withSpeed:(float) speed; - (void) physicsGravity:(SCNScene *) scene withGravity:(SCNVector3) gravity; @end
PhysWorldBridge.m
#import "PhysWorldBridge.h" @implementation PhysWorldBridge - (id) init { if (self = [super init]) { } return self; } - (void) physicsWorldSpeed:(SCNScene *) scene withSpeed:(float) speed { scene.physicsWorld.speed = speed; } - (void) physicsGravity:(SCNScene *) scene withGravity:(SCNVector3) gravity { scene.physicsWorld.gravity = gravity; } @end
当您添加第一个objective-c文件时,Xcode应该提示您创建一个XXX-Bridging-Header.h.让它创建这个文件.
将类的导入添加到’XXX-Bridging-header.h“:
// // Use this file to import your target's public headers that you would like to expose to Swift. // #import "PhysWorldBridge.h"
现在你可以使用这个(hacky)桥来设置Swift的属性:
//scene.physicsWorld.speed = 2.0 // CAN'T USE ABOVE OR LINKER ERROR let bridge = PhysWorldBridge(); bridge.physicsWorldSpeed(scene,withSpeed: 2.0); //This call bridges properly //So would the gravity one: bridge.physicsGravity(scene,withGravity: SCNVector3Make(0,-90.81,0));