>我有一个对象数组,每个对象都包含一个带有 yes 或 no 的布尔值。我想将所有带有布尔 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 beboermU00f8de";
"Opslag_set" = 0;
Overskrift = "BeboermU00f8de";
Prioritet = 0;
Svar = (
{
Dato = "2012-11-07 16:23:07 +0000";
Forfatter = "6. tv.";
Indhold = "Fedt fedt fedt";
}
);
},
您必须使用 NSNumber
才能将布尔值存储在数组中。
假设你的布尔数组被称为 boolArray
,获取一个只有 YES
的数组的代码将是这样的:
NSMutableArray* temp = [NSMutableArray new];
for (NSNumber* value in boolArray)
{
if ([value boolValue])
{
[temp addObject:[NSNumber numberWithBool:YES]];
}
}
但是,您为什么要这样做?这将返回一个数组,其中包含一定数量的相同元素。如果这是你想要的,你可以数数字。我能想到的另一件事是,你有一个带有布尔属性的对象,在这种情况下,你可以很容易地调整上面的代码。
编辑:好的,让我们假设我们有一个名为MyDataObject
的对象,它具有布尔属性 - NSNumber* boolProperty
。这是代码:
NSMutableArray* temp = [NSMutableArray new];
for (MyDataObject* value in boolArray)
{
if ([value.boolProperty boolValue])
{
[temp addObject:value];
}
}
这应该适用于您正在做的事情。 temp
将引用原始对象 - 它们不会被复制。