2017-08-13 27 views
11

हटा दिया गया है मुझे स्विफ्ट 3 कोड को स्विफ्ट 4 में परिवर्तित करने में समस्या हो रही है। मैंने ऐप में सफलतापूर्वक सबकुछ अनुवाद करने में कामयाब रहा है, लेकिन मुझे एक लाइन के साथ परेशानी हो रही है कोड की:स्विफ्ट 4: 'सबस्ट्रिंग (टू :)' को

cleanURL = cleanURL.substring(to: cleanURL.index(before: cleanURL.endIndex)) 

त्रुटि मैं हो रही है यह है:

ViewController.swift:62:33: 'substring(to:)' is deprecated: Please use String slicing subscript with a 'partial range upto' operator. 
+0

क्या आप वाकई एक नया परिभाषित करने के बजाय एक चर को म्यूट करने के लिए समझ में आता है? यदि अंतिम प्रतीक बंद करने के बाद यूआरएल "साफ" है, तो इसे पहले भी "क्लीनर" क्यों कहा जाता है? – Alexander

+1

जांचें [यह धागा] (https://stackoverflow.com/q/45562662/6541007)। एक डुप्लिकेट लगता है। – OOPer

उत्तर

20

ठीक है, ऐसा क्या त्रुटि का कहना है, एक 'आंशिक सीमा तक' ऑपरेटर के साथ स्ट्रिंग टुकड़ा करने की क्रिया सबस्क्रिप्ट का उपयोग करें:

let actuallyCleanURL = kindaCleanURL[..<kindaCleanURL.endIndex] 

ध्यान दें कि यह Substring देता है। यदि आपको अधिक स्लाइसिंग ऑपरेशन करने की आवश्यकता है, तो उन्हें इस सबस्ट्रिंग पर करें। एक बार पूरा हो जाने के बाद, इसे String पर String प्रारंभकर्ता (String(mySubString)) के माध्यम से चलाकर इसे बढ़ावा दें, जिससे स्मृति की एक प्रति बन जाए।

+1

यह एक स्ट्रिंग नहीं लौटाता है, लेकिन एक स्ट्रिंग.SubSequence। आपको इसे स्ट्रिंग (...) के साथ एक स्ट्रिंग में कनवर्ट करने की आवश्यकता होगी क्योंकि इसके लिए ओपी की तरह काम करना है। – timgcarlson

+0

@timgcarlson अच्छा बिंदु – Alexander

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