Swift 4:'substring(to:)' 已弃用 [重复]
Posted
技术标签:
【中文标题】Swift 4:\'substring(to:)\' 已弃用 [重复]【英文标题】:Swift 4: 'substring(to:)' is deprecated [duplicate]Swift 4:'substring(to:)' 已弃用 [重复] 【发布时间】:2017-08-13 17:14:49 【问题描述】:我在将我的 Swift 3 代码转换为 Swift 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.
【问题讨论】:
你确定改变一个变量而不是定义一个新变量有意义吗?如果去掉最后一个符号后 url 是“干净的”,为什么在此之前它还被称为“cleanURL”? 检查this thread。似乎是重复的。 【参考方案1】:好吧,按照错误说的做,使用字符串切片下标和“部分范围”运算符:
let actuallyCleanURL = kindaCleanURL[..<kindaCleanURL.endIndex]
请注意,这将返回 Substring
。如果您需要进行更多的切片操作,请在此子字符串上进行。完成后,通过 String
初始化程序 (String(mySubString)
) 将其提升为 String
,从而生成内存副本。
【讨论】:
这不会返回一个字符串,而是一个 String.SubSequence。您需要使用 String(...) 将其转换为字符串,因为它可以像 OP 预期的那样工作。 @timgcarlson 好点以上是关于Swift 4:'substring(to:)' 已弃用 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Swift 4:不推荐使用 substring(with:)':请使用字符串切片下标 [重复]
swift3.0常用操作包含删除字符串(string),更换字符串,插入字符串
条件绑定的初始化程序必须具有可选类型,而不是“Substring.SubSequence”(又名“Substring”) - swift [重复]