मैं एक वैकल्पिक उदाहरण चर के साथ एक NSManagedObject उपवर्ग है के साथ एक NSNumber वर में boolValue एक्सेस करनावैकल्पिक श्रृंखलन (स्विफ्ट में)
@NSManaged var condition: NSNumber? // This refers to a optional boolean value in the data model
मैं कुछ करना चाहते हैं जब हालत चर मौजूद है और होता है 'सही' ।
बेशक, मैं इसे इस तरह कर सकते हैं:
if let cond = condition {
if cond.boolValue {
// do something
}
}
हालांकि, मैं आशा व्यक्त की यह एक ही बात एक छोटा सा वैकल्पिक श्रृंखलन के साथ और अधिक कॉम्पैक्ट करने के लिए संभव हो जाएगा। कुछ इस तरह:
if condition?.boolValue {
// do something
}
लेकिन यह एक संकलक त्रुटि पैदा करता है:
Optional type '$T4??' cannot be used as a boolean; test for '!= nil' instead
इस समस्या को हल करने के लिए सबसे कॉम्पैक्ट तरीका था यह:
if condition != nil && condition!.boolValue {
// do something
}
वहाँ वास्तव में उपयोग करने के लिए कोई रास्ता नहीं है वैकल्पिक चेनिंग के साथ बुलियन मूल्य, या क्या मुझे यहां कुछ याद आ रही है?
'testNil == true' घातक त्रुटि बढ़ाएं: अप्रत्याशित रूप से एक वैकल्पिक मान को अनदेखा करते समय शून्य पाया गया। तो, आपको इसे 'testNil? .boolValue == true' जैसा लिखना चाहिए, अगर अच्छा नहीं लग रहा है। :( –
मैंने अभी परीक्षण किया है और यह सही तरीके से काम करता है, कोई अपवाद नहीं फेंक दिया गया है। यह एक वैकल्पिक है, इसलिए कोई मजबूर अनचाहे नहीं होता है, इसलिए मुझे आश्चर्य है कि आपको यह त्रुटि कैसे मिली। क्या यह संभव है कि आपने इसे गलती से वैकल्पिक रूप से अनचाहे वैकल्पिक घोषित किया? – Antonio
ओह , यह मेरी गलती है। यह त्रुटि 'var testNil: NSNumber! = nil' जैसी वैकल्पिक रूप से अनवरोधित वैकल्पिक के साथ उठाई गई है। इसके बारे में क्षमा करें। –