trier un tableau composé de 3 NSNumber

2»

Réponses

  • @Joanna : Heu....en effet, je cherchais quelque chose de simple.... et avant la réponse de Mick, j'ai utilisé ta solution qui fonctionne très bien... Je pense que Mick apporte une autre solution


     


    Merci en tout cas à  vous tous


  • Joanna CarterJoanna Carter Membre, Modérateur

    Hmmm, mais tu as dit que tu ne voulais pas créer un objet. NSDictionary est un objet, dérivé de NSObject.


     


    Il faut accéder les dictionnaires par clés et, surtout avec les NSStrings, c'est pas difficile de saisir la mauvaise valeur.


     


    Qu'est-ce que t'as contre les objets ?


  • Ah oui....alors je me suis mal exprimé : je voulais en fait éviter de créer un objet perso, donc un fichier .m et.h.....


  • DrakenDraken Membre
    mai 2017 modifié #35


    Ah oui....alors je me suis mal exprimé : je voulais en fait éviter de créer un objet perso, donc un fichier .m et.h.....




     


    Je te l'ai déjà  dis: passe à  Swift ! Qu'un développeur expérimenté avec des années de bouteille travaille en Objective-C, d'accord, c'est normal. Mais pour un débutant en programmation, il n'y a pas photo, Swift étant vraiment plus simple.


     


    Moi aussi les .h et les .m m'agaçait. Maintenant c'est du passé ..


     


    Si j'ai posté une solution Swift à  ton problème, c'est en partie pour que tu puisse constater à  quel point ce langage est plus simple que l'objectif-C.

  • Joanna CarterJoanna Carter Membre, Modérateur

    Tu pourrais toujours le mettre avec une autre classe  8--)


     


    Mais plus sérieuse, pour la lisibilité de ton code, il vaut l'effort, surtout lorsque tu arrives à  revisiter ton code dans un an  :-*


  • Merci à  tous  pour tout ces conseils


  • Joanna CarterJoanna Carter Membre, Modérateur
    mai 2017 modifié #38

    Quand même, voilà  le code que tu peux copier/coller ; ça m'a mis 5 minutes à  faire :



    // Tuple.h

    #import <Foundation/Foundation.h>

    @interface Tuple : NSObject

    @property NSInteger V1;

    @property NSInteger V2;

    @property NSInteger V3;

    - (instancetype)initWithV1:(NSInteger)V1 V2:(NSInteger)V2 V3:(NSInteger)V3;

    @end


    // Tuple.m


    #import "Tuple.h"


    @implementation Tuple

    - (instancetype)initWithV1: (NSInteger)V1 V2:(NSInteger)V2 V3:(NSInteger)V3
    {
    self = [super init];

    if (self)
    {
    self.V1 = V1;

    self.V2 = V2;

    self.V3 = V3;
    }

    return self;
    }

    @end

    Et, pour le test :



    {
    NSMutableArray *tableauPrincipal = [NSMutableArray array];

    for (int i=0; i < 10; i++)
    {
    Tuple *tuple = [[Tuple alloc] initWithV1:rand() % 100 +1 V2:rand() % 100 + 1 V3:rand() % 100 + 1];

    [tableauPrincipal addObject: tuple];
    }

    [tableauPrincipal sortUsingComparator:^NSComparisonResult(Tuple * _Nonnull obj1, Tuple * _Nonnull obj2)
    {
    return obj1.V1 > obj2.V1;
    }];

    for (Tuple *t in tableauPrincipal)
    {
    NSLog(@%ld, %ld, %ld, t.V1, t.V2, t.V3);
    }
    }

    8--)


  • Merci Joanna mais j'avais déjà  utilisé le code que tu m'avais donné et pris la peine de m'expliquer, code qui est le même que celui-ci du reste....


Connectez-vous ou Inscrivez-vous pour répondre.