ios中的containsObject始终返回no

时间:2014-12-10 17:13:07

标签: ios objective-c iphone nsarray

我的favouriteMark数组有以下对象((no),(no),(no)),但当我尝试containsObject时,它总是返回NO。

if([favouriteMark containsObject:@"no"] == YES)
{
NSLog(@"Success");
}

如果情况没有进入。

3 个答案:

答案 0 :(得分:1)

这很有效:

 NSArray *noArray = @[@"no",@"no",@"no"];
 if ([noArray containsObject:@"no"])
 {
    NSLog(@"No array contains no");
 }

这也有效:

     NSArray *noArray = @[@NO,@NO,@NO];
if ([noArray containsObject:@NO])
{
    NSLog(@"No array contains no");
}

您必须比较相同的对象类型。

最后一个选项:

NSArray *noArray = @[@[@"no"],@[@"no"],@[@"no"]];
NSLog(@"This array look like your array : %@",[noArray description]);

if ([noArray containsObject:@[@"no"]])
{
    NSLog(@"No array contains no");
}

答案 1 :(得分:1)

好的,你的数组是一个数组数组,每个数组都包含一个字符串(非常随机)。

无论如何,您可以像这样更改代码......

if([favouriteMark containsObject:@[@"no"]]) // don't need to have == YES
{
    // it contains @[@"no"]
    NSLog(@"Success");
}

答案 2 :(得分:0)

出于调试目的,使用强力搜索替换containsObject:并设置断点以查看正在进行的操作:

for(NSObject *element in favouriteMark) {
    if([element compare:@"no"] == NSOrderedSame) {
        NSLog(@"Element %@ matches.", element);
        break;
    } else {
         // set breakpoint and inspect element if desired
        NSLog(@"Element %@ of class %@ does not match.", element, [element class]);
    }
 }