estoy de escaneo wifi de información utilizando NSMutableArray, pero hay pocos valores duplicados aparecen, así que intenta utilizar el siguiente código, pero sigue recibiendo los valores duplicados,

if([scan_networks count] > 0) 
{
    NSArray *uniqueNetwork = [[NSMutableArray alloc] initWithArray:[[NSSet setWithArray:scan_networks] allObjects]];
    [scan_networks removeAllObjects];

    NSSortDescriptor *networkName = [[[NSSortDescriptor alloc] initWithKey:@"SSID_STR" ascending:YES] autorelease];
    NSArray *descriptors = [NSArray arrayWithObjects:networkName,nil];

    [scan_networks addObjectsFromArray:[uniqueNetwork sortedArrayUsingDescriptors:descriptors]];
}

cómo esto se puede resolver, gracias

InformationsquelleAutor Apache | 2009-12-07

6 Comentarios

  1. 4

    Puede utilizar NSSET pero si sólo se usa cuando la orden no importa si el fin de la materia, a continuación, ir a por este enfoque.Yo la he utilizado y dar respuesta perfecta. en Lugar de NSmutableArray matriz de poner su NSmutableArray que contiene el Valor duplicado.

    NSArray *copy = [NSmutableArray copy];
    
    NSInteger index = [copy count] - 1;
    
    for (id object in [copy reverseObjectEnumerator])
     {
    
     if ([NSmutableArray indexOfObject:object inRange:NSMakeRange(0, index)] != NSNotFound)
    
     {
            [NSmutableArray removeObjectAtIndex:index];
    
     }
    
        index--;
    }
    
    [copy release];
  2. 3

    Aquí está el código de quitar valores duplicados de NSMutable Matriz..va a trabajar para usted.
    myArray es su Mutable de la Matriz que desea quitar valores duplicados..

    for(int j = 0; j < [myArray count]; j++){
        for( k = j+1;k < [myArray count];k++){
            NSString *str1 = [myArray objectAtIndex:j];
            NSString *str2 = [myArray objectAtIndex:k];
            if([str1 isEqualToString:str2])
                [myArray removeObjectAtIndex:k];
           }
    }
    //Now print your array and 
  3. 1

    Creo que es mejor hacer esto:

     NSMutableIndexSet *indexes = [[NSMutableIndexSet alloc]init];
    
     for(int j = 0; j < [myArray count]; j++) {
    
     for( k = j+1;k < [myArray count];k++) {
    
        NSString *str1 = [myArray objectAtIndex:j];
        NSString *str2 = [myArray objectAtIndex:k];
        if([str1 isEqualToString:str2])
            [indexes addIndex:k];
       }
    }
    
    [myArray removeObjectsAtIndexes:indexes];

    Puede ejecutar en problemas si usted manipular la matriz, mientras que el bucle en mi experiencia.

  4. 1

    Esta es otra manera:

    - (NSArray *)removeDuplicatesFrom:(NSArray *)array {
        NSSet *set = [NSSet setWithArray:array];
        return [set allObjects];
    }
    • el trabajo para mí, gracias…
  5. 0

    tal vez usted puede tratar el NSArray categoría.

    #import <Foundation/Foundation.h>
    
    @interface NSArray(filterRepeat)
    -(NSArray *)filterRepeat;
    
    @end
    
    
    #import "NSArray+repeat.h"
    @implementation NSArray(filterRepeat)
    -(NSArray *)filterRepeat
    {
        NSMutableArray * resultArray =[NSMutableArray array];
        [self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
            if (![resultArray containsObject: obj]) {
                [resultArray addObject: obj];
            }
        }];
        return resultArray;
    }
    @end

Dejar respuesta

Please enter your comment!
Please enter your name here