Odpowiedz na ten temat
Pokaż wyniki od 1 do 4 z 4
  1. Avatar macQUB
    Dołączył
    Aug 2006
    Skąd
    Podkarpacie
    Postów
    251

    Cytuj | #1

    Zbudowałem pętlę, która dodaje do tablicy NSMutableDictionary.

    Kod:
    -(void)tablicaNaSlownik{
        
        int i=0, j=1;
        for (NSMutableArray *tab in kolumny) {
            [tablicaSlownikow addObject:[[[NSMutableDictionary alloc]init]autorelease]];
            
            for (NSMutableString *wyraz in tab) {
               
                [[tablicaSlownikow objectAtIndex:i]setObject:wyraz forKey:[NSString stringWithFormat:@"%d", j]];
                ++j;            
                 }      
            ++i;
            j=1;
        }  
        Slownik=[tablicaSlownikow copy];
      
    }
    Do tablic zawartych w głównej tablicy dodawane są słowniki kolejno.
    Jedna taka wewnętrzna tablica wygląda następująco:

    {
    1 = 22;
    10 = 23;
    11 = 27;
    12 = 30;
    13 = 25;
    2 = 24;
    3 = 18;
    4 = 29;
    5 = 15;
    6 = 26;
    7 = 14;
    8 = 28;
    9 = 21;
    },
    Dlaczego nie sortuje mi słowników według kluczy?
    Debugger pokazuje że tablica jest normalnie budowana aż do 10 elementu, który zaczyna być wstawiany po pierwszym dlaczego tak się dzieje? Pozostałe słowniki w tablicach są poukładane prawidłowo.
    Komputer: MacBook alu 13,3' 2,4 GHz
    Telefon: iPhone 4s


  2. Avatar kamil.burczyk
    Dołączył
    Jan 2011
    Skąd
    Kraków
    Postów
    46

    Cytuj | #2

    Sortuje wg kluczy, ale klucze są Stringami więc "10" < "2", na takiej samej zasadzie jak "ab" < "b".
    Ostatnio edytowane przez kamil.burczyk ; 15.09.2011 o 13:24
    Komputer: MacBook Pro 15" Late 2007
    Telefon: iPhone 4

  3. Avatar macQUB
    Dołączył
    Aug 2006
    Skąd
    Podkarpacie
    Postów
    251

    Cytuj | #3

    To samo było a nawet gorzej gdy były liczbami całkowitymi j a dokładniej obiektami klasy NSNumber
    Komputer: MacBook alu 13,3' 2,4 GHz
    Telefon: iPhone 4s

  4. Avatar kamil.burczyk
    Dołączył
    Jan 2011
    Skąd
    Kraków
    Postów
    46

    Cytuj | #4

    A przed wypisaniem wołasz gdzieś sortowanie ? Bo jeśli NSMutableDictionary to implementacja idei HashMapy (a tak to sobie wyobrażam), to dane są tam z definicji nieposortowane. Możesz wyciągnąć wszystkie klucze jako tablicę, posortować ją i potem wyciągać wartości odpowiednie dla posortowanych kluczy, np:

    Kod:
    NSArray *myKeys = [myDictionary allKeys];
    NSArray *sortedKeys = [myKeys sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
    
    id firstObject = [myDictionary objectForKey: [sortedKeys objectAtIndex:0]];
    Komputer: MacBook Pro 15" Late 2007
    Telefon: iPhone 4

Odpowiedz na ten temat