2014-11-23 14 views
9

कुछ स्विफ्ट काम शुरू करने की कोशिश कर रहा है। मैंस्विफ्ट शिकायत "बाहरी तर्क लेबल"

var imageData = UIImageJPEGRepresentation(image, compressionQuality:1.0) 

उपयोग कर रहा हूँ, लेकिन मैं कॉल में एक चेतावनी "बाहरी तर्क लेबल 'compressionQuality' मिलता है। मैंने सोचा कि स्विफ्ट में माध्यमिक मानकों या तो जरूरत थी या 'की अनुमति' लेबल की जाती है, लेकिन इस नहीं दूँगी मैं इसे बिल्कुल उपयोग करता हूं- अगर मैं इसे छोड़ देता हूं तो इमारत में विफल रहता है। चूंकि यह एक सिस्टम फ़ंक्शन है, इसलिए मैं इसकी आवश्यकता के लिए # का उपयोग नहीं कर सकता। लेकिन मैं कोड को और अधिक पठनीय बनाने के लिए जितना संभव हो उतना पैरामीटर नाम देने में सक्षम होना चाहता हूं खुद के लिए, मैं ObjC विधि के नाम की तरह, के रूप में अत्यधिक शब्द के रूप में वे कभी कभी कर रहे हैं।

वहाँ अतिरिक्त तर्क लेबल अनुमति देने के लिए एक संकलक ध्वज सेट करने के लिए एक तरीका है?

उत्तर

7

आप ऐसा नहीं कर सकते हैं, क्योंकि वह फ़ंक्शन किसी बाहरी पैरामीटर नाम की घोषणा नहीं करता है। आंतरिक पैरामीटर नाम केवल उस फ़ंक्शन के भीतर उपयोग किए जा सकते हैं जो उन्हें घोषित करता है।

स्विफ्ट में UIImageJPEGRepresentation पद्धति के रूप में घोषित किया जाता है:

func UIImageJPEGRepresentation(_ image: UIImage!, 
          _ compressionQuality: CGFloat) -> NSData! 

चेक दोनों पैरामीटर, दोनों आंतरिक नाम है केवल ताकि आप का उपयोग नहीं कर सकते हैं:

var imageData = UIImageJPEGRepresentation(image, compressionQuality:1.0) 

बदलें कि करने के लिए:

var imageData = UIImageJPEGRepresentation(image,1.0) 
+0

ठीक है मैं आंतरिक-केवल पैरामीटर नामों से अनजान था। Autocomplete इसे शुरू में मुझे दिखाया। –

+0

मुझे वह त्रुटि मिल रही है, लेकिन केवल दो पैरामीटर के लिए: दूसरा कारण कोई त्रुटि नहीं देता है। यही है, मेरे पास 'func dummy (a: int, b: Int)' है और यदि मैं इसे 'डमी (ए: 1, बी: 2)' कहता हूं, तो मुझे 'a:' पर ​​त्रुटि मिलती है (जब तक कि मैं पूर्ववत नहीं करता निश्चित रूप से '' ''। लेकिन अगर मैं इसे इस तरह कहता हूं: 'डमी (1, बी: 2);', यूरो दूर चला जाता है। कोई उपाय? –

+1

@ निकोलसमिआरी: अन्य सभी कार्यों में इनिट विधियों को छोड़कर पहला पैरामीटर लेबल अनिवार्य नहीं है, अन्यथा आप इसे अनिवार्य रूप से चिह्नित करते हैं। तो आपके मामले में उस फ़ंक्शन को कॉल करते समय पहला पैरामीटर लेबल "ए" आवश्यक नहीं है। –

0

मुझे एक ही समस्या थी, लेकिन एक्सकोड मेरे मजे में से एक में शिकायत कर रहा था cions।

मेरे कोड में अतिरिक्त } बनने के लिए बाहर निकला, जिससे बाद की फ़ंक्शन घोषणाएं मेरी कक्षा के बाहर हों।

त्रुटि संदेश नरक के रूप में अजीब था, इसलिए मुझे उम्मीद है कि यह किसी और को हेल्प करता है।

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