二元运算符'&&'不能适用于两个' Int'操作数

时间:2016-06-06 06:55:09

标签: swift swift2

我想检查以下值firstName和lastName。但斯威夫特不允许我访问。它给出的错误就像"二元运算符&&&'不能适用于两个' Int'操作数"

if firstName.length && lastName.length {

}

2 个答案:

答案 0 :(得分:1)

在Swift中你不能像在C和Objective-C中那样检查非null,你必须写

Before
0100

After
1011

答案 1 :(得分:0)

@Vadian有一个很好的答案,但可以更明确地说 - 而且还有一个额外的皱纹:

对于逻辑运算符(&&||)以及ifwhile语句的条件,C接受任何类型 - 它只会处理任何零值(其中包括空指针,但这里的字符串长度只是一个零整数)为false,其他任何为true。

但是,在Swift中,这种布尔逻辑上下文中允许的唯一类型是Bool - 你不能传递一个整数并期望分支值是否为零,所以你必须使用比较运算符例如>==,或返回Bool值的属性或方法。

由于您正在处理String,因此您最好使用isEmpty属性。获取Swift String的长度不是“自由”计算 - 相同的字节数可以是不同数量的人类可读字符,具体取决于这些字节是什么,因此您无法在不检查字节的情况下计算字符数。回答字符串是否为空而不是检查所有字节要快得多。

(那么,也许你还没有使用Swift字符串?那些没有你正在使用的length属性。)