问候,
我试图简单地将NSString与NSArray进行比较。
这是我的代码:
NSString *username=uname.text;
NSString *regex=@"^[a-zA-Z0-9-_.]{3,20}$";
NSArray *matchArray=nil;
matchArray=[username componentsMatchedByRegex:regex];
if(matchArray[0] == "asdf"){ //this line causes the problem!
NSLog(@"matchArray %@",matchArray);
}
我得到“无效的操作数到二进制==”错误。
如何比较字符串?
非常感谢,
答案 0 :(得分:5)
您正在尝试将NSString
与C字符串(char *
)进行比较,这是错误的。 matchArray
是NSArray
,因此您无法将其视为C数组,您必须使用其objectAtIndex:
方法并传入索引。
请改用:
if ([[matchArray objectAtIndex:0] isEqualToString:@"asdf"]) {
NSLog(@"matchArray %@", matchArray);
}
解决您的评论,isEqualToString:
未在自动填充中显示的原因是因为Xcode无法猜测matchArray
包含NSString
s(它只知道它包含id
s,即任意Objective-C对象)。如果你真的想确定,你可以执行一个明确的演员表,但如果你不这样做也没关系:
if ([(NSString *)[matchArray objectAtIndex:0] isEqualToString:@"asdf"]) {
NSLog(@"matchArray %@", matchArray);
}
答案 1 :(得分:1)
您想使用-objectAtIndex来获取数组元素。不是C数组访问器语法
答案 2 :(得分:0)
尝试使用:
[[matchArray objectAtIndex:0] isEqualToString:@"asdf"];
无论如何,字符串“asdf”应为@“asdf”