警告:“字符”已弃用:请直接使用string或子string

字符 – String的实例属性,从Xcode 9.1(beta)

它是/是一个非常有用的属性,从string获取子string,但不赞成和Xcodebuild议使用substring 。 我试图检查一下SO问题和苹果开发者教程/指导原则。 但没有看到任何解决scheme/替代build议。

这里是警告消息:

'字符'已弃用:请使用string或子string

在这里输入图像说明

我有很多string操作是使用属性characters执行/处理的。

任何人有关于此更新的任何想法/信息?

Swift 4引入了对stringAPI的更改。
你可以使用stringValue.count > 0而不是stringValue.characters.count > 0

欲了解更多信息,请从这里获取样品

例如

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

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 

这个警告只是冰山一angular,有一个string变化的赃物,string又是一个字符的集合,但我们得到了新的和冷静,subStrings 🙂

这是一个很好的阅读这个: https : //useyourloaf.com/blog/updating-strings-for-swift-4/

JSON响应是处理string的最常见情况之一。 在这个例子中,我在我的手表应用程序中创build了一个扩展,以删除比特币JSON对象的最后(n)个字符。

Swift 3:

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

Xcode 9.1错误信息:

'字符'已弃用:请直接使用string或子string

Xcode告诉我们直接使用stringvariables或方法。

Swift 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文档。

droplast()

removelast()

计数字符