2017-08-13 104 views
11

我無法將我的Swift 3代碼轉換爲Swift 4.我已經成功翻譯了應用程序中的所有內容,但遇到單行問題代碼:Swift 4:'substring(to :)'已棄用

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

你確定變異變量是有意義的,而不是定義一個新變量嗎?如果在去掉最後一個符號之後URL是「乾淨的」,爲什麼甚至在此之前稱爲「cleanURL」? – Alexander

+1

檢查[此線程](https://stackoverflow.com/q/45562662/6541007)。似乎是重複的。 – OOPer

回答

20

嘛,做錯誤說什麼,用String切片標有「局部範圍高達」運營商:

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

請注意,這將返回Substring。如果您需要執行更多的切片操作,請在此子字符串上執行操作。完成後,通過運行String初始化程序(String(mySubString))將其升級到String,從而導致創建內存副本。

+1

這不會返回一個字符串,而是一個String.SubSequence。你需要將它轉換爲一個帶有String(...)的字符串,因爲它像OP所期望的那樣工作。 – timgcarlson

+0

@timgcarlson好點 – Alexander