intrebare sortare array objective c
  [ Ignoră ]
Avatar
RankRankRankRank
Sr. Member
Din: Bucuresti
Macuser din: 22.09.06

am si eu o intrebare,cum pot sorta un NSArray ale carui elemente sunt cheile(NSString) dintr-un NSDictionary?
am incercat medota keysSortedByValueUsingSelector dar imi pune cheile in array nesortate.

array = [dictionary keysSortedByValueUsingSelector: @selector (compare:)]

Si as mai avea o problema dintr-o carte,tot un array dar NSMutableArray ale carui elemnte sunt fractii(obiecte).
Am incercat asa dar nu merge:

[array sortUsingSelector: @selector(compareFractions:)];


NSCoparisonResult compareFractions: (idf
{
        
return [(numerator/denominatorcompare: (f.numerator/f.denominator)];

Multumesc anticipat.

 Semnătură 

A man should look for what is, and not for what he thinks should be.—Albert Einstein

Profil
 
  [ Ignoră ]   [ # 1 ]
Avatar
RankRank
Jr. Member
Din: Cluj
Macuser din: 10.03.09

NSSortDescriptor

Profil
 
  [ Ignoră ]   [ # 2 ]
Avatar
RankRank
Jr. Member
Din: Cluj
Macuser din: 10.03.09

vezi NSSortDescriptor

Profil
 
  [ Ignoră ]   [ # 3 ]
Avatar
RankRankRankRank
Sr. Member
Din: Bucuresti
Macuser din: 22.09.06

multumesc pentru raspuns.
nu vreau sa folosesc alta clasa,ma intereseaza de ce nu functioneaza metodele keysSortedByValueUsingSelector: si sortUsingSelector:

 Semnătură 

A man should look for what is, and not for what he thinks should be.—Albert Einstein

Profil
 
  [ Ignoră ]   [ # 4 ]
Avatar
RankRank
Jr. Member
Din: Cluj
Macuser din: 10.03.09
boboc - 22 Aprilie 2010 12:37 PM

am si eu o intrebare,cum pot sorta un NSArray ale carui elemente sunt cheile(NSString) dintr-un NSDictionary?
am incercat medota keysSortedByValueUsingSelector dar imi pune cheile in array nesortate.

array = [dictionary keysSortedByValueUsingSelector: @selector (compare:)]

Si as mai avea o problema dintr-o carte,tot un array dar NSMutableArray ale carui elemnte sunt fractii(obiecte).
Am incercat asa dar nu merge:

[array sortUsingSelector: @selector(compareFractions:)];


NSCoparisonResult compareFractions: (idf
{
        
return [(numerator/denominatorcompare: (f.numerator/f.denominator)];

Multumesc anticipat.

Eu cred ca e posibil ca tu sa nu fi inteles cum functioneaza metoda respectiva.

[dictionary keysSortedByValueUsingSelector: @selector (compare:)]


Ca asta sa functioneze trebuie ca obiectele sa raspunda la metoda compare:
Chiar daca cheile din dictionar sunt NSString care raspunde la compare, daca obiectele din valori nu implementeaza metoda, sortarea nu o sa functioneze.

La fel si in cazul array-ului. Selectorul pe care il folosesti la comparatie trebuie sa fie o metoda pe care o implementeaza fiecare obiect din array.

Sper ca am reusit sa fiu destul de coerent. smile

Profil
 
  [ Ignoră ]   [ # 5 ]
Avatar
RankRankRankRank
Sr. Member
Din: Bucuresti
Macuser din: 22.09.06

Am rezolvat ambele problema cu putina atentie smile
Metoda keysSortedByValueUsingSelector: returneaza un NSArray cu keys-urile iar metoda sortUsingSelector merge cu NSMutableArray si nu cu NSArray.
Trebuia sa folosesc metoda sortedArrayUsingSelector care are forma:

-(NSArray *) sortedArrayUsingSelector: (SELselector
array = [array sortedArrayUsing: @selector(compare:)]

Pentru celalalta problema,pentru a sorta un array cu fractii(obiecte) metoda care merge am facut-o asa:

[array sortUsingSelector: @selector(compareFractions:)];

-(
NSComparisonResultcompareFractions: (Fraction *) f
{
    int first
,second;
    
first numerator f.denominator;
    
second f.numerator denominator;
    if(
first second)
        return 
NSOrderedAscending;
    else if(
first == second)
        return 
NSOrderedSame;
    else
        return 
NSOrderedDescending;
 Semnătură 

A man should look for what is, and not for what he thinks should be.—Albert Einstein

Profil
 
   
 
 
‹‹ help      Iphone developer program ››