【问题标题】: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。似乎是重复的。

标签: ios swift swift4


【解决方案1】:

好吧,按照错误说的做,使用字符串切片下标和“部分范围”运算符:

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

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

【讨论】:

  • 这不会返回一个字符串,而是一个 String.SubSequence。您需要使用 String(...) 将其转换为字符串,因为它可以像 OP 预期的那样工作。
  • @timgcarlson 好点
猜你喜欢
  • 2020-03-03
  • 1970-01-01
  • 2016-07-24
  • 1970-01-01
  • 1970-01-01
  • 2018-03-02
  • 2020-04-20
  • 2016-07-10
  • 1970-01-01
相关资源
最近更新 更多