如何在swift 4中将`substring`更改为等效的新版本1?

时间:2018-02-04 09:57:51

标签: swift xcode

我绝对不了解xcode,swift,mac等,但我必须修改和现成的项目,只需很少的设置。

一切都很好,但以下警告我并不了解如何通过谷歌搜索和阅读来解决它,因为我根本不懂这种语言。如果有人为此写出等效的swift 4代码,我将非常感激:

警告:

'substring(from:)' is deprecated: Please use String slicing subscript with a 'partial range from' operator.

CODE:

hex = hex.substring(from: hex.characters.index(hex.startIndex, offsetBy: 1))

1 个答案:

答案 0 :(得分:2)

警告要你这样做:

hex = String(hex[hex.index(hex.startIndex, offsetBy: 1)...])

注意:

    在Swift 4中不推荐使用
  • hex.characters;直接使用hex
  • [index...]切片下标,其中'部分范围来自'操作。它表示从index创建一个子串到字符串的末尾。在这种情况下,indexhex.index(hex.startIndex, offsetBy: 1),它只是字符串第二个字符的索引。将此切片运算符应用于hex会创建一个子字符串,其中包含从第二个字符到字符串末尾的所有字符hex
  • 唯一的问题是切片运算符返回类型String.SubSequence而不是String的子字符串。 String()是将切片运算符返回的String.SubSequence转换回String所必需的。

更好的方式

所有这一行代码都是从String中删除第一个字符。在Swift 4中,有一种更好的方法:

hex = String(hex.dropFirst())

注意:

  • dropFirst()会返回String.SubSequence,因此有必要使用String()将其转换回String
  • 这实际上比原始代码更好,因为在给定空字符串""时它不会崩溃。