我的favouriteMark
数组有以下对象((no),(no),(no))
,但当我尝试containsObject
时,它总是返回NO。
if([favouriteMark containsObject:@"no"] == YES)
{
NSLog(@"Success");
}
如果情况没有进入。
答案 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]);
}
}