2014-11-24 105 views
0

我不太確定如果我應該爲此做出另一個問題或在最後一個問題上進行擴展,請糾正我,如果我不打算。在自定義NSMutableArray中聲明屬性

我目前得到這個代碼的工作:

if ([ myArray containsObject:@"Object1" ] && [ myArray containsObject:@"Object 2"]) { 
return YES; 
} 

else { 
return NO; 
} 

什麼,我需要做的就是修改這個所以通過數組進行迭代,並訪問一個對象的屬性值。例如:

if (myArray contains obj.ID 1 & 2) { 
    return YES 
} 
else{ 
    return NO; 
}   

關於我應該看什麼的建議?我在這裏待了幾個小時,嘗試了不同的排列方式,但沒有運氣。

謝謝!

+0

無關,使用'return [some methodcall]'而不是'如果[某個方法調用]返回YES否則返回NO' – 2014-11-24 22:25:26

回答

1

您可以使用-indexOfObjectPassingTest:來檢查具有特定屬性值的對象是否在您的數組中。該方法在找到對象的索引時返回對象的索引,否則返回NSNotFound。

因此,假設你的物體是例如NSDictionaries他們有NSNumbers作爲標識,你可以做這樣的事情:

if([myArray indexOfObjectPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) { 
    return [[obj objectForKey:@"ID"] intValue]==1; 
}]!=NSNotFound && [myArray indexOfObjectPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) { 
    return [[obj objectForKey:@"ID"] intValue]==2; 
}]!=NSNotFound) 
{ 
    //Array contains objects 
} 
1

如果你只想要第一個對象,你可以使用-indexOfObjectPassingTest:作爲mpramat說。如果您希望陣列中符合條件的所有對象,請使用indexesOfObjectsPassingTest:

它將塊作爲參數。塊評估每個對象並返回YES或者知道讓該方法知道該對象是否應該成爲通過測試的對象集合的一部分。