目标C:将Array Element与String进行比较

时间:2011-02-16 14:57:35

标签: iphone objective-c string compare

问候,

我试图简单地将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);
    }

我得到“无效的操作数到二进制==”错误。

如何比较字符串?

非常感谢,

3 个答案:

答案 0 :(得分:5)

您正在尝试将NSString与C字符串(char *)进行比较,这是错误的。 matchArrayNSArray,因此您无法将其视为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”