2015-12-03 7 views
5

UITextView के पाठ को अपडेट करते समय, मुझे textView.text += "..." काम नहीं मिला। संकलक ने मुझे चेतावनी दी कि "बाइनरी ऑपरेटर '+ =' प्रकार 'स्ट्रिंग!' के संचालन पर लागू नहीं किया जा सकता है। और 'स्ट्रिंग' '। ऐसा लगता है कि मुझे textView.text के बाद एक विस्मयादिबोधक चिह्न जोड़ना होगा।क्यों '+ =' स्पष्ट रूप से अनचाहे विकल्प के लिए काम नहीं करता है?

हालांकि, अगर मैंने इसे textView.text = textView.text + "..." तक विस्तारित किया, तो यह काम करता था। मुझे आश्चर्य है कि क्या इसे इस तरह से डिजाइन किया गया है या मैंने कुछ गलत समझा है?

+3

अनिवार्य रूप से वही समस्या [एक स्पष्ट रूप से अनचाहे वैकल्पिक में वृद्धि] (http://stackoverflow.com/questions/33504945/incrementing-an-implicitly-unwrapped-optional)। –

उत्तर

2

लागू रूप से अनचाहे वैकल्पिक अभी भी Optional है और यह उस प्रकार से अलग है जो इसे लपेटता है। तो तुम ऑपरेटर निर्धारित करने होंगे:

func +=(inout l: String!, r: String) { 
    l = (l ?? "") + r 
} 

var a: String! = "a" 
var b: String = "b" 

a += b // "ab" 
0

दोनों अलग हैं, जब यू textField.text कर रहे हैं + = "पाठ", इसका मतलब है यू उस पर एक और स्ट्रिंग जोड़ रहे हैं। लेकिन जब आप textField.text = textField.text + "text" का उपयोग कर रहे हैं, तो इसका मतलब है कि आप टेक्स्ट स्ट्रिल्ड में 2 स्ट्रिंग और सेटिंग जोड़ रहे हैं।

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