如果您需要检查数组是否包含一个对象,你应该用
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