Swift 4中characters已废弃,如何修复指定两行代码?
修复Swift 4中
characters属性废弃的警告问题 嘿,这个问题我熟!在Swift 4之后,苹果官方废弃了String的characters属性,因为现在String本身就直接实现了Collection协议,你可以直接对字符串进行集合操作,不用再通过characters中转啦。
原来的问题代码
let first = String(characters.prefix(1)).capitalized let other = String(characters.dropFirst())
修复后的代码
假设这段代码是在String的扩展中(毕竟直接用characters应该是指代self.characters),修改后应该是这样:
// 更简洁的写法:prefix(1)返回Substring,直接调用capitalized就能得到String let first = self.prefix(1).capitalized // dropFirst()返回Substring,转成String let other = String(self.dropFirst())
如果这段代码是针对某个具体的字符串变量(比如let myString = "test"),那直接把characters换成你的变量名就行:
let myString = "hello" let first = myString.prefix(1).capitalized let other = String(myString.dropFirst())
为什么这样改?
- Swift 4重构了字符串模型,让
String本身就具备集合特性,prefix(_:)、dropFirst()这些原本需要通过characters调用的方法,现在可以直接在String实例上使用。 - 另外,
Substring(也就是prefix和dropFirst的返回值)和String共享大部分API,所以prefix(1).capitalized可以直接得到String类型的结果,不需要额外用String()包裹。
内容的提问来源于stack exchange,提问作者Noah Schmidt
相关产品推荐
相关产品推荐

