2014-06-09 12 views
5

मैं तेजी से गड़बड़ कर रहा हूं और भौतिकी कार्य करने की कोशिश कर रहा हूं। _OBJC_CLASS _ $ _ SCNPhysicsWorld ", से संदर्भित: में GameViewController.o ld __TFC3sk218GameViewController11viewDidLoadfS0_FT_T_: प्रतीक (रों) वास्तुकला i386 बजना के लिए नहीं मिला:एससीएनफ़िक्सिक्स त्रुटि त्रुटि

यह त्रुटि मैं " वास्तुकला i386 के लिए अपरिभाषित प्रतीकों "करने देते त्रुटि : लिंकर कमांड एग्जिट कोड 1 के साथ असफल रहा (0 -"

मुझे लगता है कि मुझे उस लाइब्रेरी को जोड़ने या आयात करने के साथ करना है जो मैं नहीं हूं, लेकिन मैंने वह सब कुछ जोड़ा है जो मुझे मिल सकता है मैंने सोचा कि इसे ठीक कर सकता है (गेम किट पर अन्य पोस्ट में पाया गया) क्या किसी को पता है कि यह क्या हो सकता है? धन्यवाद।

+0

क्या आप ओएस एक्स 10.9 पर एक्सकोड 6 बीटा चला रहे हैं? भौतिकी 10.10 के लिए दृश्य किट में एक नई सुविधा है। – rickster

+0

आह ... हाँ। मैं ओएसएक्स 10.9 –

+0

पर एक्सकोड बीटा 6 चला रहा हूं हालांकि मैं आईओएस 8 सिम्युलेटर चला रहा हूं। मुझे नहीं लगता था कि ओएस उस मुद्दे का कारण बन जाएगा क्योंकि सॉफ़्टवेयर आईओएस के लिए है। –

उत्तर

8

ओबज-सी/स्विफ्ट ब्रिज के साथ यहां एक बग है।

जबकि आप एक समाधान के लिए प्रतीक्षा, आप अपने आप के लिए एक अस्थायी पुल बनाने के द्वारा इस के आसपास काम कर सकते हैं:

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 

एक्सकोड आपको पहली उद्देश्य-सी फ़ाइल जोड़ने पर XXX-Bridging-Header.h बनाने के लिए संकेत देना चाहिए। इसे इस फाइल को बनाने दें।

'XXX-ब्रिजिंग-header.h "करने के लिए वर्ग के लिए एक आयात जोड़ें:

// 
// Use this file to import your target's public headers that you would like to expose to Swift. 
// 

#import "PhysWorldBridge.h" 

अब आप स्विफ्ट से गुण सेट करने के लिए इस (hacky) पुल का उपयोग कर सकते हैं:

//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)); 
+0

मुझे लगता है कि भविष्य में सभी विसंगतियों के लिए स्थैतिक वर्ग का उपयोग करना बेहतर होगा, भविष्य में जब बग तय किया जाएगा, बस स्थिर कोड के साथ स्थिर रेखाओं को प्रतिस्थापित करें। – HotJard

संबंधित मुद्दे