ios - Optional Chaining Not Working As Expected -


मैं अपने UIViewController उपवर्ग में निम्न कोड है

  वर्ग sidemenu: UIViewController {var contentViewController : UIViewController? ओवरराइड फ़ंक को चाहिएअयुरोटेट () - & gt; बूल {contentViewController लौट .shouldAutorotate ()?}}   

लेकिन किसी कारण मैं निम्नलिखित त्रुटि मिलती है के लिए:

वैकल्पिक प्रकार के मान '? बूल' नहीं unwrapped; क्या आप का मतलब था '!' या '??'

रिटर्न लाइन पर ऊपर त्रुटि संदेश का स्क्रीनशॉट

मुझे उम्मीद है कि वैकल्पिक चेनिंग वैकल्पिक को खोलना चाहिए, लेकिन यह सही नहीं लगता है? क्या मै गलत हु?

एक वैकल्पिक श्रृंखला का परिणाम वैकल्पिक है। तो ?. ShouldAutorotate () एक bool पैदा करता है जबकि आपके फ़ंक्शन को Bool की उम्मीद है इसलिए त्रुटि:

वैकल्पिक प्रकार का मान 'बूल?' नहीं unwrapped; क्या आप '!' या '??'

त्रुटि द्वारा उल्लिखित दो संभावित समाधान हैं एक खोलने में या तो contentViewController! .shouldAutorotate () या contentViewController? .shouldAutorotate ()! लेकिन इन दोनों को दुर्घटना होगा अगर contentViewController के साथ है था शून्य और वह ऐसा नहीं है जो आपके मन में था।

दूसरा विकल्प है कि आपके bool? है शून्य । वहाँ चेनिंग के लिए एक अच्छी ऑपरेटर है: ?? जो और बाईं ओर स्थित टी लेता है टी दाईं ओर स्थित यही कारण है, अगर तुम झूठी वापस जाने के लिए चाहते हैं जब contentViewController है नहीं के बराबर आप वापसी होगी निम्नलिखित:

  लौट contentViewController .shouldAutorotate () ?? झूठी   

यह प्रभावी रूप से निम्नलिखित कोड के रूप में ही व्यवहार है:

  यदि जाने नियंत्रक = contentViewController {वापसी controller.shouldAutorotate ()} else {अवास्तविक लौटाते }    

Comments