如何在NSMutableArray中过滤UIColor对象

时间:2016-05-24 07:18:17

标签: ios objective-c nsmutablearray nspredicate

我正在生成随机颜色并像{<1}}一样存储

NSmutableArray

我想检查每次向数组添加颜色时都不重复,for(int i=0; i<1000; i++) { UIColor *c = [self colorGen]; [_cArray addObject:c]; } 中不存在如何将谓词应用于_cArray来检查[self colorGen]方法的颜色返回,例如_cArray在10次迭代后已经包含红色_cArray再次返回红色,这样我就可以避免再次添加它的数组。

4 个答案:

答案 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");
    }


}