2014-06-12 12 views
5

is` मैं अगर मेरे इस एक Xyz-वस्तुस्विफ्ट: के साथ `सिंटेक्स

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) { 
let senderIsBonusProduct = sender is Xyz 

है जाँच करना चाहते हैं की तुलना करें AnyObject लेकिन मैं त्रुटि निम्न हो:

Could not find a user-defined conversion from type 'Int1' to type 'Bool'

+0

कौन सी लाइन त्रुटि का कारण बनती है? –

+0

कंपाइलर-दूसरी पंक्ति –

उत्तर

3

अभिव्यक्ति sender is Xyz लौटा रहा है एक Boolsender पर निर्भर करता है Xyz का प्रकार है। ऐसा प्रतीत होता है कि एक कंपाइलर बग है जिससे sender is Xyz वास्तव में Int1 लौटा रहा है जो Bool पर आंतरिक रूप से coerced नहीं हो रहा है।

एक समाधान नहीं है:

let bonus = (sender is Xyz ? true : false) 
+2

पर त्रुटि यह बताती है कि कोड क्या करता है, लेकिन यह संकलन करने में विफल क्यों हुआ? –

+0

@ ब्रायन चेन क्या होता है यदि आप स्पष्ट रूप से निरंतर 'Int1' या' Bool' को ध्वजांकित करते हैं? गोज़ोनर शायद एक कंपाइलर अनुमान बग के बारे में लिखता है लेकिन इससे अनुमान अधिक अनुमान लगाने में मदद मिल सकती है। – Tommy

+0

@ ब्रायन चेन कंपाइलर बग। – Kevin

2

तुम भी इसे करने के लिए बदल सकते हैं

if let senderOfTypeXYZ = sender as? Xyz { 
    // senderOfTypeXYZ is available with the expected type here 
} 
0

समाधान बीटा 3 रिलीज के साथ अब और आवश्यकता नहीं है और आप अन्य तार्किक ऑपरेटरों के साथ is ऑपरेटर गठजोड़ कर सकते हैं ।

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