-1

我有一个对象数组,每个对象都包含一个带有是或否的布尔值。我想将所有带有 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";
        }
    );
},
4

1 回答 1

2

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

假设您的布尔数组被调用boolArray,那么获取数组的代码YES将是这样的:

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

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

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

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

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

于 2012-11-15T20:54:09.060 回答