警告: 不推荐使用“字符”: 请直接使用 String 或 Substring

字符 -String 的实例属性,不推荐使用 < a href = “ https://stackoverflow. com/questions/44390162/download-install-Xcode-9.1-9-2-9-3-beta-or-Xcode-9-version-without-Premium-d/44390183 # 44390183”> Xcode 9.1

通过使用 characters属性从 String 获取子字符串是非常有用的,但是现在它已经被废弃,Xcode 建议使用 substring。我已经尝试查看了相关的 SO 问题和苹果开发者教程/指南。但是看不到任何建议的解决方案/备选方案。

以下是警告信息:

不推荐使用“字符”: 请使用 String 或 Substring

enter image description here

我有很多字符串运算都是使用属性 characters来执行/处理的。

有人知道这次更新的消息吗?

80114 次浏览

Swift 4对字符串 API 进行了更改。
您可以只使用 !stringValue.isEmpty而不是 stringValue.characters.count > 0

为了获得更多的信息,您可以从 给你获得样品

例如:

let edit = "Summary"
edit.count   // 7

这个警告只是冰山一角,有大量的字符串变化,字符串又是字符的集合,但是我们得到了一些新的和很酷的东西,子字符串:)

这是一本很好的读物: Https://useyourloaf.com/blog/updating-strings-for-swift-4/

操作字符串最常见的情况之一是使用 JSON 响应。在这个例子中,我在我的手表应用程序中创建了一个扩展来删除比特币 JSON 对象的最后(n)个字符。

斯威夫特3:

func dropLast(_ n: Int = 0) -> String {
return String(characters.dropLast(n))

Xcode 9.1错误消息:

不推荐使用“字符”: 请直接使用 String 或 Substring

Xcode 告诉我们使用字符串变量或方法 直接。 < br > < br >

迅捷4:

func dropLast(_ n: Int = 0) -> String {
return String(dropLast(n))
}

完整延伸部分:

extension String {
func dropLast(_ n: Int = 0) -> String {
return String(dropLast(n))
}


var dropLast: String {
return dropLast()
}
}

电话:

print("rate:\(response.USDRate)")
let literalMarketPrice = response.USDRate.dropLast(2)
print("literal market price: \(literalMarketPrice)")

控制台:

//rate:7,101.0888 //JSON float
//literal market price: 7,101.08 // JSON string literal

附加例子:

  • print("Spell has \(invisibleSpellName.count) characters.")
  • return String(dropLast(n))
  • return String(removeLast(n))

文件:

您通常会使用常见的方法,如 dropLast()removeLast()count,因此这里是每种方法的显式 Apple 文档。

滴水器()

Removelast ()

数字

Swift 4 vs Swift 3个例子:

let myString = "test"


for char in myString.characters {print(char) } // Swift 3
for char in myString { print(char) } // Swift 4


let length = myString.characters.count // Swift 3
let length = myString.count // Swift 4

使用此 characters是因为在 Swift 2.0中 String不再是集合。然而,这仍然是有效的代码在 Swift 4,但不再是必要的,因为 String是一个 Collection了。

例如,Swift 4 String现在有一个直接计数属性,它提供字符计数:

// Swift 4
let spString = "Stack"
spString.count           // 5

字符串和子字符串示例。

绳子

Swift 4 String现在直接获取给出 String 的第一个字符的 Element: (string.characters.first)

let spString = "Stack"
let firstElement = spString.first   //S

字符串

使用 SubString 获取第一个字符。

let spstring = "Welcome"
let indexStartOfText = spstring.index(spstring.startIndex, offsetBy: 1)
let sub = spstring.substring(to: indexStartOfText)
print(sub) //W

您还可以使用此代码进行字典分组,而不必使用{ $0.properties. first! }。

let cities = ["Shanghai": 24_256_800, "Karachi": 23_500_000, "Beijing": 21_516_000, "Seoul": 9_995_000]
let groupedCities = Dictionary(grouping: cities.keys) { $0.first! }
print(groupedCities)

只要删除字符 例如:

字符数 到 数值

func validatePhoneNumber(number:String) -> Bool{
if number.count < 10. //deprecated ->(number.characters.count)
{
return false;
}else{
return true;
}
}

直接使用.count 和字符是不推荐的。