【问题标题】:How do I look for bool values in array?如何在数组中查找布尔值?
【发布时间】:2012-11-04 13:02:26
【问题描述】:

我有一个对象数组,每个对象都包含一个布尔值,是或否。我想将所有带有 bool YES 的对象复制到另一个数组。我怎样才能做到这一点?我考虑过使用谓词过滤数组或将其集成到 for 循环中,但我似乎无法做到正确。

我需要这样的东西:

for (BOOL* opslag_Set in [dataSource allKeys]){
    NSArray *array = [dataSource objectForKey:opslag_Set];
    for (int j = 0; j < [array count]; j++) {
        if ([[array objectAtIndex:j] isEqualToString:@"YES"]) {
            add object to another array;
        }
    }
}

我的数组的第一个对象:

    },
    {
    Dato = "2012-11-07 16:20:57 +0000";
    Forfatter = "Vej 51, st. tv.";
    Indhold = "Referat af beboerm\U00f8de";
    "Opslag_set" = 0;
    Overskrift = "Beboerm\U00f8de";
    Prioritet = 0;
    Svar =         (
                    {
            Dato = "2012-11-07 16:23:07 +0000";
            Forfatter = "6. tv.";
            Indhold = "Fedt fedt fedt";
        }
    );
},

【问题讨论】:

  • 别误会,我觉得你以前写代码或者伪代码会更好。对不起,如果你没有得到我的权利..
  • 对不起,我的错:) 我会发布我所拥有的,但它根本不起作用

标签: arrays for-loop boolean filtering nspredicate


【解决方案1】:

您必须使用NSNumber 才能将布尔值存储在数组中。

假设您的布尔数组称为boolArray,则获取仅包含YES 的数组的代码将是这样的:

NSMutableArray* temp = [NSMutableArray new];
for (NSNumber* value in boolArray)
{
    if ([value boolValue])
    {
        [temp addObject:[NSNumber numberWithBool:YES]];
    }
}

但是,您为什么要这样做?这将返回一个数组,其中包含一定数量的相同元素。如果这是你想要的,你可以数数。我能想到的另一件事是您有一个具有 bool 属性的对象,在这种情况下您可以轻松地调整上面的代码。

编辑:好的,假设我们有一个名为MyDataObject 的对象,它有一个布尔属性-NSNumber* boolProperty。代码如下:

NSMutableArray* temp = [NSMutableArray new];
for (MyDataObject* value in boolArray)
{
    if ([value.boolProperty boolValue])
    {
        [temp addObject:value];
    }
}

这应该适用于您正在做的事情。 temp 将引用原始对象 - 它们不会被复制。

【讨论】:

  • 谢谢!我从 plist 中获取我的数组。首先,我需要使用 bool YES 来计算对象,然后在集合视图中显示它们,并在 yes 和 no 中使用不同的标题
  • 我想我仍然对你想要做什么感到困惑。如果你想同时显示是和否,为什么你不能只使用你开始的数组?您的数组是纯粹的 NSNumber 数组还是您有包含布尔值的数据的自定义对象?
  • 每个对象都包含一些字符串和一个布尔值。我需要一个数组,其中只有带有布尔值的对象。对不起,我有点困惑。
  • 谢谢。我不确定“MyDataObject 部分。我将数组中的第一个对象添加到我的原始帖子中。在这种情况下,MyDataObject 是什么?
  • 您有某种数据对象来保存 bool 和 string 变量。就是这样。
猜你喜欢
  • 1970-01-01
  • 2013-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-04
  • 2016-08-24
  • 1970-01-01
  • 2020-05-14
相关资源
最近更新 更多