Xcode报错:’onChange(of:perform:)’ was deprecated in iOS 17.0: Use `onChange` with a two or zero parameter action closure instead.
Xcode报错:’onChange(of:perform:)’ was deprecated in iOS 17.0: Use `onChange` with a two or zero parameter action closure instead.

Xcode报错:’onChange(of:perform:)’ was deprecated in iOS 17.0: Use `onChange` with a two or zero parameter action closure instead.

问题分析

问题代码如下:

...
.onChange(of: userAnswer) {newValue in
    if newValue.count <= 3 {
        userAnswer = String(newValue.prefix(3))
    }
}

这个报错的翻译为:

‘onChange(of:perform:)’ 在 iOS 17.0 中已弃用:改用带有两个或零个参数动作闭包的 `onChange`。

因此,当我们使用onChange时,推荐使用零参数或两个参数的onChange。

修改代码如下:

...
.onChange(of: userAnswer) {_, newValue in
    if newValue.count <= 3 {
        userAnswer = String(newValue.prefix(3))
    }
}

这个问题在于,onChange(of)限制支持两个参数:旧值和新值,因此,我们应该使用_忽略旧值,只处理新值。

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开放者。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注