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

Eam*_*orr 0 string iphone compare objective-c

问候,

我试图简单地将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);
    }
Run Code Online (Sandbox Code Playgroud)

我得到"无效的操作数到二进制=="错误.

我该如何比较字符串?

提前谢谢了,

Bol*_*ock 5

您试图比较NSString一个C字符串(char *),这是错误的.matchArray是一个NSArray所以你不能把它当作C数组,你必须使用它的objectAtIndex:方法并传入索引.

请改用:

if ([[matchArray objectAtIndex:0] isEqualToString:@"asdf"]) {
    NSLog(@"matchArray %@", matchArray);
}
Run Code Online (Sandbox Code Playgroud)

解决你的注释,之所以isEqualToString:没有出现在自动完成中,是因为Xcode无法猜测它matchArray包含NSStrings(它只知道它包含ids,即任意的Objective-C对象).如果你真的想确定,你可以执行一个显式的演员表,但是如果你不这样做则无关紧要:

if ([(NSString *)[matchArray objectAtIndex:0] isEqualToString:@"asdf"]) {
    NSLog(@"matchArray %@", matchArray);
}
Run Code Online (Sandbox Code Playgroud)