2016-09-17 8 views
13

मैं परिवर्तित कर रहा हूँ स्विफ्ट 2 कोड है कि संकलित करता है तथा स्विफ्ट से 3 चलाता है और निम्न त्रुटि हो रही है: इस प्रकारस्विफ्ट 3 रूपांतरण हो जाता है 'int1' के लिए परिवर्तनीय नहीं है 'बूल'

'Int1' is not convertible to 'Bool'

कोड है :

isUpdated = sharedInstance.database!.executeUpdate(
"UPDATE Coin_Table SET upgrade=?, grade=?, WHERE coin_id=?", 
withArgumentsInArray: [ 
coinInfo.upgrade, (coinInfo.grade != nil) ? coinInfo.grade! : NSNull(), 
coinID]) 

कोड ऊपर

- (BOOL)executeUpdate:(NSString*)sql withArgumentsInArray:(NSArray *)arguments; 

के रूप में विधि FMDB.h में परिभाषित साथ FMDB उपयोग कर रहा है जब मेरे कोड abov संकलन ई यह झंडे "(coinInfo.grade! =" और त्रुटि देता है।

मैं अगर यह अभी भी क्या होगा देखने के लिए यह सरल बनाने की कोशिश की:

let theArray: NSArray = [true ? "foo" : NSNull()] 

और अब भी वही त्रुटि, इस बार यह झंडे "सच" मिलता है।

Screenshot of error

मैं इस पर खोजों के एक झुंड किया है और https://bugs.swift.org/browse/SR-2372 से करीब कुछ भी अन्य नहीं मिला है लेकिन यह है कि tuples जो मुझे लगता है कि मेरी कोड को प्रभावित करेगा नहीं होता के साथ एक मुद्दा है।

क्या कोई इस पर कुछ प्रकाश डाल सकता है या अगर यह एक कंपाइलर बग है तो वर्कअराउंड का सुझाव दे सकता है?

धन्यवाद

+0

'' Builtint.Int1' Bool' struct के आंतरिक प्रतिनिधित्व ('struct के _value' संपत्ति है) , और यह कि एक त्रुटि/चेतावनी संदेश में पॉप अप करता है आम तौर पर संकलक से गैर-इच्छित व्यवहार को इंगित करता है। ऐसा लगता है जैसे आप जिस बग रिपोर्ट को लिंक करते हैं, वह इस व्यवहार को भी समझाता है> कंपाइलर टर्नरी ऑपरेशन के परिणाम के प्रकार का अनुमान नहीं लगा सकता है। जैसे स्पष्ट रूप से 'एनएसएसटींग' इंस्टेंस को प्रारंभ करने के लिए स्ट्रिंग शाब्दिक का उपयोग करके (कंपाइलर पर भरोसा करने के बजाए) त्रुटि को बाधित करेगा (' अरे: NSArray = [true? NSString (string: "foo"): NSNull()] ')। – dfri

+0

टिप्पणी के लिए धन्यवाद। मैंने वास्तव में मेरे प्रश्न को पोस्ट करने के लिए उपयोग किए जाने वाले वास्तविक कोड को सरल बना दिया था क्योंकि मेरे पास एक ही पंक्ति पर एकाधिक प्रविष्टियां थीं, इसलिए यह विधि मेरे लिए थोड़ा कमजोर होती। नीचे temp vars दृष्टिकोण के साथ गया था। – KevinR

उत्तर

4

के रूप में आप अपने आप को लिखा आपकी समस्या का एक एक here वर्णित एक ही है। बग होता है))

सिर्फ़ एक अस्थायी चर का उपयोग करने के लिए क्यों नहीं इसे ठीक करने के:

let hasGrade: Any = (coinInfo.grade != nil) ? coinInfo.grade! : NSNull() 
isUpdated = sharedInstance.database!.executeUpdate(
"UPDATE Coin_Table SET upgrade=?, grade=?, WHERE coin_id=?", 
withArgumentsInArray: [ 
coinInfo.upgrade, hasGrade, 
coinID]) 
+0

धन्यवाद, इसने मुझे इस मुद्दे को पीछे छोड़ दिया, पहले "कोई भी" इस्तेमाल नहीं किया था। – KevinR

+0

कभी-कभी यह त्रुटि तब दिखाती है जब आपके कोड में एक अलग त्रुटि होती है। मैं इसके बारे में उलझन में था, लेकिन बाद में मुझे पता चला कि उस लाइन पर एक और त्रुटि थी कि एक्सकोड रिपोर्ट नहीं कर रहा था, और जब मैंने इसे ठीक किया, तो यह त्रुटि चली गई। – csga5000

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