You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:00:20