2014-11-24 77 views
0

我不太确定如果我应该为此做出另一个问题或在最后一个问题上进行扩展,请纠正我,如果我不打算。在自定义NSMutableArray中声明属性

我目前得到这个代码的工作:

if ([ myArray containsObject:@"Object1" ] && [ myArray containsObject:@"Object 2"]) { 
return YES; 
} 

else { 
return NO; 
} 

什么,我需要做的就是修改这个所以通过数组进行迭代,并访问一个对象的属性值。例如:

if (myArray contains obj.ID 1 & 2) { 
    return YES 
} 
else{ 
    return NO; 
}   

关于我应该看什么的建议?我在这里待了几个小时,尝试了不同的排列方式,但没有运气。

谢谢!

+0

无关,使用'return [some methodcall]'而不是'如果[某个方法调用]返回YES否则返回NO' – 2014-11-24 22:25:26

回答

1

您可以使用-indexOfObjectPassingTest:来检查具有特定属性值的对象是否在您的数组中。该方法在找到对象的索引时返回对象的索引,否则返回NSNotFound。

因此,假设你的物体是例如NSDictionaries他们有NSNumbers作为标识,你可以做这样的事情:

if([myArray indexOfObjectPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) { 
    return [[obj objectForKey:@"ID"] intValue]==1; 
}]!=NSNotFound && [myArray indexOfObjectPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) { 
    return [[obj objectForKey:@"ID"] intValue]==2; 
}]!=NSNotFound) 
{ 
    //Array contains objects 
} 
1

如果你只想要第一个对象,你可以使用-indexOfObjectPassingTest:作为mpramat说。如果您希望阵列中符合条件的所有对象,请使用indexesOfObjectsPassingTest:

它将块作为参数。块评估每个对象并返回YES或者知道让该方法知道该对象是否应该成为通过测试的对象集合的一部分。