我正在生成随机颜色并像{<1}}一样存储
NSmutableArray
我想检查每次向数组添加颜色时都不重复,for(int i=0; i<1000; i++) {
UIColor *c = [self colorGen];
[_cArray addObject:c];
}
中不存在如何将谓词应用于_cArray
来检查[self colorGen]
方法的颜色返回,例如_cArray
在10次迭代后已经包含红色_cArray
再次返回红色,这样我就可以避免再次添加它的数组。
答案 0 :(得分:0)
for(int i=0; i<1000; i++) {
UIColor *c = [self colorGen];
if (![_cArray containsObject:c]) {
[_cArray addObject:c];
}
}
使用此代码
答案 1 :(得分:0)
NSMutableSet *colors = [NSMutableSet set];
while (colors.count < 1000) {
[colors addObject:[self colorGen]];
}
比较UIColor
个对象的示例代码:
NSMutableSet *colors = [NSMutableSet set];
UIColor *color1 = [UIColor colorWithRed:0.1 green:0.2 blue:0.3 alpha:1];
UIColor *color2 = [UIColor colorWithRed:0.1 green:0.2 blue:0.3 alpha:1];
[colors addObjectsFromArray:@[color1, color2]];
NSLog(@"%lu", (unsigned long)colors.count);
此代码打印 1 ,表示两种颜色都被视为相等!
答案 2 :(得分:0)
你可以这样做,
for(int i=0; i<1000; i++) {
UIColor *c = [self colorGen];
if (![_cArray containsObject:c] ) {
[_cArray addObject:c];
}
else{
NSLog(@"already there");
}
}
答案 3 :(得分:0)
方法改变colorGen它应该返回UIColor的十六进制值
for(int i=0; i<1000; ) {
NSString *strCode = [self colorGen];
if (![_cArray containsObject:strCode] ) {
[_cArray addObject:strCode];
i++;
}
else{
NSLog(@"already there");
}
}