Objective-C 中如何正确的比较字符串的值
一个纯.NET程序员出来看其他语言是很悲剧的~
尤其是像Objectie-C这种类C语言~~
最近做个小东西,第一屏是登录视图,需要与服务器通讯,为了测试方便
就随手写了句
if (txtCO_NO.text == @"1" && txtUSER_CD.text == "1" && txtPASSWD.text = "1") { //跳过服务器验证 }
然后悲剧得发现,每次都没有进去…..
断点监视,发现值还都没问题,于是翻了翻手册,发现个问题
双等号==运算符只能判断两个NSString的指针数值,而不是他们所指的对象。
txtCO_NO.text得到的1与后面的@”1″,内存指向不同,所以不相等,也就不能进入if语句中了~
这一点和.NET有很大的差异。
虽然.NET中的String是引用类型(有值类型特点的特殊引用类型),但是运算时仍然可以当成值类型来处理。
正确的写法是使用isEqualToString:(NSString *)
if ([txtCO_NO.text isEqualToString:@"1"] && [txtUSER_CD.text isEqualToString:@"1"] && [txtPASSWD.text isEqualToString:@"1"] ) { //跳过服务器验证 }