如果您需要檢查數組是否包含一個對象,你應該用
if ([imageOneArray containsObject:[UIImage imageNamed:@"White.png"]]) {
//DO SOMETHING
};
這裏去,你應該注意到,該陣列檢查遏制發送-isEqual:
到它的對象。所以,在UIImage
-isEqual:
將只做指針比較。由於+imageNamed:
提供的圖像緩存機制,上面的代碼將返回YES
,但是,通常應該返回NO
。考慮下面的例子:
NSString *path = [[NSBundle mainBundle] pathForResource:@"White" ofType:@"png"];
UIImage *image1 = [UIImage imageWithContentsOfFile:path];
UIImage *image2 = [UIImage imageWithContentsOfFile:path];
NSArray *arr = @[image1];
BOOL contains1 = [arr containsObject:image1]; // YES
BOOL contains2 = [arr containsObject:image2]; // NO
並考慮用繩子下面的例子:
NSString *string1 = [NSString stringWithString:@"abc"];
NSString *string2 = [NSString stringWithString:@"abc"];
NSArray *arr = @[string1];
BOOL contains1 = [arr containsObject:string1]; // YES
BOOL contains2 = [arr containsObject:string2]; // YES
所以,你應該記住的平等規則的數組中的對象。在NSHipster上有關於此主題Equality的精彩文章。
如果您需要檢查陣列是否等於到另一個陣列去
if ([imageOneArray isEqualToArray:@[[UIImage imageNamed:@"White.png"]]]) {
//DO SOMETHING
};
在NSArray class reference看看看的時候,你可以用數組
我建議你保持圖像的名稱,如在陣列中,'@ @ 「White.png」,@ 「Black.png」,..]'和'[比較imageOneArray containsObject:@「White.png」]'和'isEqualToString:'方法可以很容易的進行元素比較。 – Akhilrajtr 2014-08-29 04:39:59