从NSMutableArray中删除重复的元素

时间:2012-03-12 05:08:17

标签: objective-c nsmutablearray

我有NSMutableArray。我也合成了它。我通过xml提取一些文件名等方法从一个方法添加对象。现在在我的数组中,多次出现相同的元素。我需要消除多个对象并获得唯一的对象。如何才能做到这一点?我尝试了下面的代码,但后来出现了一些错误。

NSString *AName = [CompleteFileName_string1 substringWithRange:ArtistRange];  
[array_artist addObject:AName];
for(int i=0; i < [array_artist count]; i++)
{
    if([[array_artist objectAtIndex:i] isEqualToString:[array_artist objectAtIndex:i+1]])
    {
        [[array_artist objectAtIndex:i+1]=NULL];
    }
    else
    {

    }
}

编辑***我需要通过忽略区分大小写来消除......

6 个答案:

答案 0 :(得分:1)

使用NSSet

答案 1 :(得分:0)

只需检查数组是否包含对象:

if(![yourArray containsObject:stringFromXML]) 
{
             [yourArray addObject:stringFromXML]
}

答案 2 :(得分:0)

使用以下代码.. 首先在array_artist中添加所有值

int i1=0;

tempArray = [NSMutableArray alloc] init];

while (i1 < [array_artist count]) {     

    if ([tempArray containsObject:[array_artist objectAtIndex:i1]) {
    //Do not Add    
    }
    else {
       //Add  object
       [tempArray addObject:array_artist:i1];           
    }

    i1++;
}

答案 3 :(得分:0)

if([[array_artist objectAtIndex:i] &&[array_artist objectAtIndex:i+1] caseInsensitiveCompare:@"True"] == NSOrderedSame])

{  添加元素  }

答案 4 :(得分:0)

将tempArray作为golbally

当您从XML添加对象时,您只需检查

NSString *upCaseString=[stringFromXML uppercaseString];

if(![tempArray containsObject:upCaseString]) {    
    [array_artist addObject:stringFromXML]; 

    [tempArray addObject:upCaseString];
}

答案 5 :(得分:0)

怎么样:

NSArray *out = [NSSet setWithArray:in].allObjects;