Reputation: 441
i want to sort an NSMutableArray created from a xml parsing with XMLReader
NSURL *url = [NSURL URLWithString:@"http://url.to.xml"];
NSData *urlData = [NSData dataWithContentsOfURL:url];
NSError *error = nil;
NSDictionary *dictPos = [XMLReader dictionaryForXMLData:urlData error:&error];
NSMutableArray *arrayEquipos = [[dictPos objectForKey:@"posiciones"] objectForKey:@"equipo"];
this is a piece of xml
<posiciones>
<equipo id="5" orden="1" padre="21" key="bocajuniors" nombreCorto="Boca" paisId="1" paisSigla="ARG" nombreasociacion="Boca Jrs.">
<nombre>Boca Juniors</nombre>
<prom>1.583</prom>
</equipo>
</posiciones>
what i want to sort is arrayEquipos sorted by tag 'prom' descendent. thanks!
EDIT: in java i do like this:
Collections.sort(arrayEquipos, new MySalaryComp());
class MyEquipoComp implements Comparator<DescensoModel> {
@Override
public int compare(DescensoModel e1, DescensoModel e2) {
if((Float.parseFloat(e1.getProm())) < Float.parseFloat(e2.getProm())){
return 1;
} else {
return -1;
}
}
}
DescensoModel:
public class DescensoModel {
private String equipo;
private String prom;
public String getEquipo() {
return equipo;
}
public void setEquipo(String equipo) {
this.equipo = equipo;
}
public void setProm(String prom) {
this.prom = prom;
}
public String getProm() {
return prom;
}
}
Upvotes: 0
Views: 68
Reputation: 441
I figured out:
First i created a class called Equipo
@interface Equipo : NSObject
@property NSString *nombre;
@property NSString *prom;
@end
then i created an nsmutable aux array and i filled it
arrayEquiposAux = [[NSMutableArray alloc] initWithCapacity:[arrayEquipos count]];
for(int i=0;i<[arrayEquipos count];i++){
Equipo *equipo = [[Equipo alloc] init];
equipo.nombre = [NSString stringWithFormat:@"%@", [[[arrayEquipos objectAtIndex:i] objectForKey:@"nombre"] objectForKey:@"text"]];
equipo.prom = [NSString stringWithFormat:@"%@", [[[arrayEquipos objectAtIndex:i] objectForKey:@"prom"] objectForKey:@"text"]];
[arrayEquiposAux addObject: equipo];
}
then, YES! i can sorted that array
NSArray *sortedArray = [arrayEquiposAux sortedArrayUsingComparator:^NSComparisonResult(Equipo *e1, Equipo *e2){
return [e1.prom compare:e2.prom];
}];
Upvotes: 0
Reputation: 5655
[arrayEquipos sortUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"prom" ascending:YES]]]
Using prom.doubleValue
as the key may work as well.
Upvotes: 1