2010-05-04 61 views
6

我有一個充滿bools(表示爲數字)的NSArray,我需要測試以查看數組中的任何對象是否等於1.我該怎麼做?充滿bool對象的NSArray

+0

喲喲你的意思是布爾對象? – 2010-05-04 22:43:36

+0

文章編輯爲ans。問題 – 2010-05-04 22:46:13

+0

您是否試圖將整數添加到NSArray?因爲這是無法完成的。 – 2010-05-04 22:47:51

回答

12

BOOL不是對象。假設你的意思是表示一個像NSNumber這樣的布爾值的對象,它實現了一個合適的isEqual:,你可以做一些像[array containsObject:[NSNumber numberWithBool:YES]]這樣的事情。

+0

哇。我不知道它可以這樣使用。謝謝!!! – 2010-05-04 22:52:35

6

正如Chuck所說,使用-[NSArray containsObject:[NSNumber numberWithBool:YES]]。作爲一個思想實驗,這裏有一些其他的方式來實現目標...

您使用NSPredicate或使用新的模塊API可以這樣做:

NSArray *myArr //decleared, initialized and filled 

BOOL anyTrue = [myArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"boolValue == 1"]].count > 0; 

BOOL anyTrue = [myArray indexesOfObjectsPassingTest:^(id obj, NSUInteger idx, BOOL *stop) { 
    if([obj boolValue]) { 
    *stop = YES; 
    } 
    return [obj boolValue]; 
}].count > 0; 

您也可以使用Key-Value編碼,但我不確定它的相對效率:

[[myArray valueForKeyPath:@"@sum.boolValue"] integerValue] > 0; 
+3

這個bool-summing KVC版本非常可怕。 – Chuck 2010-05-04 23:03:26

+0

@Chuck,是的,我只是有點兒必須閱讀真正的代碼中的任何解決方案。雖然有趣的小功能編程腦鍛鍊。 – 2010-05-05 19:26:45