Swift 4:'substring(to :)'已弃用

问题描述:

我无法将我的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

嘛,做错误说什么,用String切片标有“局部范围高达”运营商:

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

请注意,这将返回Substring。如果您需要执行更多的切片操作,请在此子字符串上执行操作。完成后,通过运行String初始化程序(String(mySubString))将其升级到String,从而导致创建内存副本。

+1

这不会返回一个字符串,而是一个String.SubSequence。你需要将它转换为一个带有String(...)的字符串,因为它像OP所期望的那样工作。 – timgcarlson

+0

@timgcarlson好点 – Alexander