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

Swift String扩展isNotEmpty属性遇编译错误,求正确实现方案

问题解决步骤

1. 修正String扩展的拼写错误

你的String扩展里把isEmpty拼写成了iEmpty,这是第一个编译错误的根源,修正后的扩展代码如下:

extension String {
    var isNotEmpty: Bool {
        return !isEmpty
    }
}

2. 处理可选字符串的布尔运算问题

email和password是可选类型String?,通过可选链调用isNotEmpty会返回Bool?(可选布尔值),Swift不允许直接对两个Bool?使用&&运算符,以下是两种可行的解决方式:

方式一:用空合运算符转换可选布尔值

将nil的情况视为false(邮箱或密码为nil时表单必然不合法),修正formIsValid计算属性:

struct LogInViewModel {
    var email: String?
    var password: String?

    var formIsValid: Bool {
        return (email?.isNotEmpty ?? false) && (password?.isNotEmpty ?? false)
    }
}

方式二:给可选String扩展专属的isNotEmpty属性

直接给限定Wrapped为String的Optional添加isNotEmpty属性,返回非可选布尔值,这样可选字符串可直接调用该属性:

extension Optional where Wrapped == String {
    var isNotEmpty: Bool {
        return self?.isEmpty == false
    }
}

struct LogInViewModel {
    var email: String?
    var password: String?

    var formIsValid: Bool {
        return email.isNotEmpty && password.isNotEmpty
    }
}

内容的提问来源于stack exchange,提问作者IsaacNewtonGravity

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 14:17:05