मैं समझता हूँ कि क्या वैकल्पिक स्विफ्ट में हैं, लेकिन मैं सिर्फ, अगर मैं दो '!'
Xcode का उपयोग नहीं करते, जहां एक संकलक त्रुटि केOptionals की स्विफ्ट डबल unwrapping
मूल्य देता है का सामना करना पड़ा एक "डबल वैकल्पिक 'लिपटा वैकल्पिक प्रकार 'स्ट्रिंग?' अनचाहे नहीं; क्या आप '!' का उपयोग करना चाहते थे या '?'?
मेरे पास निम्न कोड है, जहां app
NSRunningApplication
प्रकार का है।
let name: String = app.localizedName!
मुझे दो !
का उपयोग क्यों करना चाहिए? परिवर्तनीय को खोलने के लिए पर्याप्त नहीं है क्योंकि यह var localizedName: String?
प्रकार है।
प्रसंग: Xcode, मुझे let name: String = app.localizedName!!
उपयोग करना चाहते हैं अन्यथा यह ऊपर संकलक त्रुटि देता है। app
चर के रूप में परिभाषित किया गया है का पालन:
var apps = NSWorkspace().runningApplications.filter{$0.activationPolicy == NSApplicationActivationPolicy.Regular}
for app in apps{
//code posted above
…
}
तो मुझे पता है कि app
एक वैकल्पिक नहीं है और हमेशा एक मूल्य है, और न ही यह एक वैकल्पिक आवेदन है।
पीएस तेजी से गणना का उपयोग करते समय प्रकार को परिभाषित करने का कोई तरीका है? for Foo(app) in apps
की तरह apps = [AnyObject]
।
'ऐप' वास्तव में कितना परिभाषित किया गया है? क्या यह एक * वैकल्पिक * NSRunning अनुप्रयोग हो सकता है? –
हम उत्तर के लिए ठोकर खा रहे हैं क्योंकि कोड की उस पंक्ति को उस त्रुटि का उत्पादन नहीं करना चाहिए। यदि ऐप वैकल्पिक था, तो आपको अलग-अलग त्रुटि मिल जाएगी। और 'localizedName' एक" डबल वैकल्पिक "(एलओएल) नहीं है। कोड की यह पंक्ति ठीक दिखती है और उस त्रुटि को उत्पन्न नहीं करनी चाहिए। दुर्भाग्य से, दुर्भाग्यवश, भ्रामक त्रुटियों को उत्पन्न कर सकता है, और मुझे आश्चर्य है कि वास्तविक समस्या कोड की पिछली पंक्ति में शेष है (या शायद आपने प्रश्न तैयार करते समय कोड की रेखा को बदल दिया है या अन्यथा साफ़ किया है)। साथ ही, जब मुझे अयोग्य त्रुटियां मिलती हैं, तो मैं प्रोजेक्ट को साफ़ करता हूं, एक्सकोड छोड़ देता हूं, व्युत्पन्न डेटा फ़ोल्डर खाली करता हूं, और एक्सकोड को पुनरारंभ करता हूं। – Rob
@MartinR अधिक जानकारी जोड़ा गया। मदद के लिए चीयर्स। – user14492