【问题标题】:Asserting properties in a custom NSMutableArray在自定义 NSMutableArray 中断言属性
【发布时间】:2014-11-24 22:22:14
【问题描述】:

我不太确定是否应该为此提出另一个问题或扩展最后一个问题,如果我不是故意的,请纠正我。

我目前正在使用此代码:

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

else {
return NO;
}

我需要做的是修改它,以便它遍历一个数组并访问一个 Objects 属性值。例如:

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

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

谢谢!

【问题讨论】:

  • 不相关,用return [some methodcall]代替if [some methodcall] return YES else return NO

标签: ios objective-c nsmutablearray


【解决方案1】:

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

因此,假设您的对象是例如NSDictionaries 并且他们有 NSNumbers 作为 ID,你可以这样做:

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
}

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-21
      • 1970-01-01
      • 1970-01-01
      • 2017-07-02
      相关资源
      最近更新 更多