2012-11-15 98 views
-1

我有一個對象數組,每個對象都包含一個帶有yes或no的布爾值。我想用bool YES將所有對象複製到另一個數組。我怎樣才能做到這一點?我已經考慮過使用謂詞過濾數組或將它集成到for循環中,但我似乎無法做到。如何查找數組中的bool值?

我需要的是這樣的:

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"; 
     } 
    ); 
}, 
+0

嘗試寫一些代碼! – Maroun

+0

感謝您的幫助 – Thomas

+0

不要誤解我,我認爲如果您之前嘗試編寫代碼或僞代碼,它會對您更好。對不起,如果你沒有得到我的權利.. – Maroun

回答

2

你將不得不爲了將布爾變量存儲在一個陣列中使用的NSNumber

假設你的布爾數組稱爲boolArray,代碼即可獲得只YES陣列將是這樣的:

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

但是,爲什麼你想這樣做嗎?這將返回一個具有一定數量元素的數組,這些元素都是相同的。如果這就是你想要的,你可以只計算一下數字。我能想到的另一件事是你有一個帶有bool屬性的對象,在這種情況下你可以很容易地修改上面的代碼。

編輯: OK,讓我們假設我們有一個叫做MyDataObject的對象有一個布爾屬性 - NSNumber* boolProperty。這裏是代碼:

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

這應該適用於你正在做的事情。 temp將引用原始對象 - 它們不被複制。

+0

謝謝!我從plist得到我的數組。首先,我需要使用bool YES來計算對象,然後在集合視圖中顯示它們,其中包含不同的標頭,並且不是。 – Thomas

+0

我想我仍然對您要做的事感到困惑。如果你想顯示「是」和「否」,你怎麼能不能使用剛開始使用的數組?你的數組是純粹的'NSNumber'數組還是你有自定義對象的數據包含一個布爾值? –

+0

每個對象都包含一些字符串和一個布爾值。我需要一個只包含bool對象的數組。對不起,我有點困惑。 – Thomas