Comment appelé une array, Canada amendement, modification

Voici le plus simple l’explication du problème.
var = lang = ""
var = nombreDamendement = 0
cette variable change par une action tag de 250 bouton exp:

if tag == 1 {
lang = "fr"
nombreDamendement = 231
programSoftwareButton(231)
amendement.text = “Français”

// initialiser les ARRAY que si nécessaire une array au lieu de 200 a 300. array

    if fr.count < 2 { 
        fr = [0,31,25,24,26,32,22,24,22,29,32,32,20,18,24,21,16,27,33,38,18,34,24,20,67,34,35,4,22,
              35,43,55,32,20,31,29,43,36,30,23,23,57,38,34,34,28,34,31,22,33,26........231code
    }
}

.
.
.
.
if tag == 225 {
lang = "pg"
nombreDamendement = 56
programSoftwareButton(56)
amendement.text = “Portuguse”
// initialiser les ARRAY que si nécessaire une array au lieu de 200 a 300.
if pg.count < 2 {
pg = [0,22,25,22,31,23,30,25,32,35,29,10,51,22,31,27,36,33,27,25,26,36,31,33,18,40,
37,21,43,46,38,18,35,23,35,35,38,29,31,43,38…56code
}
}

Maintenant j’ai des centaine d’array exp:

var fr = Int; var en = Int; var it = Int; var cr = Int; var pg = Int;… // etc.

je programme une view avec le nombre de modification avec une func qui cree des buttons prommatically.

=====================
Voici le programme un bouton choisi la langue. (PREMIERE CONDITION) [exp: je choisi pg]

qui est relier a une action tag je cree le nombre de bouton en software nouvelle view de 56 boutons. le choix pg
et permet de choisir um amendement. [exp: je choisi le 4] (DEUXIEME CONDITION)

encore la tout les bouton sont réuni a une action avec tag.
ce qui donne le numéro de l’amendement.
var amaanNb = sender.tag // = 4
var travail = ("\lang)[(amaanNb)]" // ceci donne pg[4]

VOILA OU JE MANQUE D’IDEE.
Je doit lire cette 2iem condition pour trouver le nombre de modification a cette loi.

comment faire pour lire cette array qui existe pg[4]

(TROISIEME CONDITION) = travail // ce qui devrail etre egual a 31

La seule façon que j’arrive a avoir une réponses est.

if lang == “pg” { travail = pg[amaanNb] }
.
. // je crois que j’aime le language basic si facile, j’ai
. // des problemes a ecrire 300 a 400 ligne de code pour une simple equation
. // que je ne peut pas trouver, erreur sur erreur j’ai essayer des func des
. // heures sans résultat.
.
if lang == “fr” { travail = fr[amaanNb] }
if lang == “it” { travail = it[amaanNb] }
// if lang a écrire de 300 a 400 fois lang
.
.

Merci de votre temps, j’espère qu’il y a une solution…

Bon je n’ai pas tout compris. Je présume que le français n’est pas ta langue natale.

Des solutions ? Il y a en a beaucoup. Mais tout dépend de la manière dont tu stockes les informations. Si je comprend bien, tu as PLUSIEURS CENTAINES DE TABLEAUX en mémoire, contenant chacun une liste d’amendements dans une langue bien précise. C’est une très mauvaise manière de stocker les informations. Il serait bien plus efficace de passer par une base de données, des fichiers plist (voir documentation Apple) ou encore des fichiers textes.

Avec une base de données comme REALM, présenté par Maxime dans ces cours, tu peut faire des requêtes comme demander Realm, dis-moi combien il y a d’amendements dans la langue identifié par la clé « fr », pour obtenir une réponse immédiate. Ou encore quel est l’amendement numéro 23 en langage « fr » ?

1 « J'aime »

Merci, voila des détails.
Il y a une base de donné en sqlite de 120,000 article.

Il y a une demande exagérer que le server reçois.

Donc voici la solution.

Sans utiliser le dbase on précode la requête.

1-on demande la langue.
(ce qui élimine 300% de recherche)
(avec la langue on sait combien de loi existe)
(donc on cree une page de boutons pour choisir la loi)
(ce qui donne seulement un choix réel)
(on évite que le choix soit erroné)
(exp: fr contient 231 loi)
(it 143 loi, pg 56 loi)

2-on demande l’amendement ou la loi.
maintenant que le choix est fait.
(exp: lang and amaanNb = fr 132 ou fr[132] )
(exp: lang and amaanNb = pg 4 ou pg[4] )
ce qui évite des choix comme pg 124 n’existe pas

Tout ce qui reste a faire est allez lire le nombres de
modification de cette lois et de faire la requête a la basse
de donné, ce qui élimine 90% des fauses requête.
diminue le nombre de requête au serveur incroyablement.

pour résumé
1-personne sait exactement si sa langue est supporté ni le
code a utilisé exp: Français = fr
Donc on lui offre un choix.

2-encore la personne ne sait le nombre de loi dans cette
langue exp: si une requête serait pg[65] n’existe pas, en
plus d’avoir des problèmes avec les modification a nil.
encore la un lui offre un choix de loi dans sa langue.

3-quand j’utilise if lanf == “fr” et manuellement
requête = fr[modification] une merveille, je re]ois les modification
sans jamais avoir d’erreur et des temps de 0.00024 de réponses.

4- MON PROBLÈME EST COMMENT FAIRE POUR UTILISER UN
(String) POUR FAIRE UNE RECHERCHE SUR UN ARRAY.!!!:tired_face::tired_face::tired_face:.
exp: travail = pg[4] ou travail = fr[132]

Tout ce résume a ce code.

let txt = “pg[4]”

let travail = Int(txt) ou travail = Int("\(txt)")

je veut remplacé travail = pg[4] par une String exp: travail = String
le contenu en Int de l’array.


la réponses ne donne pas le contenu de pg ou fr[array]. MAIS
naturellement une copie de String travail devient une String
pas un Int et devient une copie de string.
travail devient pg[4] et non 31

La formule première que javais pensé.
let travail = Int("\(langue)[\(amaanNb)]")
ce qui me semblais logique en swift.

en résumé j’ai écrit 50 fois le if et tout va bien.
un jours Canada prévois plus de 800 langue.
Et sans formule je devrais ajouté des if régulièrement.
Ce qui met en question toute l’application ???.

if lang == “it” {travail = it[amanNb]}
if lang == “en” {travail = en[amanNb]}
if lang == “fr” {travail = fr[amanNb]}
if lang == “es” {travail = es[amanNb]}
. 300 ligne a faire et je n’ai pas de solution
. Canada prévoir d’ici 3 ans passé a 800
. langue.
LA QUESTION FINALE ESQUE POSSIBLE :rage::fearful::scream:

J’ai un mal fou à comprendre ce que tu veux. Tes explications sont confuses et partent dans tous les sens. Tu devrais simplifier le problème avant d’en parler sur le forum plutôt que surcharger le lecteur de détails.

Je vais répondre sur ce que j’ai compris. Tu veux LIRE une valeur NUMERIQUE dans un tableau de VALEURS NUMERIQUE et la convertir en une STRING (chaîne de caractères). Rien de plus facile :

        // Tableau de valeurs numériques
        let pg = [0,22,25,22,31,23,30,25,32,35,29,10,51,22]
        // Lecture indice tableau et conversion en String
        let str = String(pg[4])
        // Affichage
        print ("Ceci est une String : ", str)

Ton explication sur la manière de charger des CENTAINES de langues en mémoire EN MEME TEMPS dans une multitude de tableaux portant des noms différents semble assez étrange. Je ne suis pas un grand spécialiste des bases de données mais quand même.

Il ne faut pas utiliser une multitude de tableau, mais UN SEUL et demander à la base de données de le remplir quand c’est nécessaire, avec les données d’une langue.

Par exemple tu veux travailler sur les lois françaises, tu charges le tableau avec les lois référencées avec l’identifiant français (« fr » je présume). Cela te permet d’utiliser les mêmes fonctions pour manipuler les informations, sans devoir DUPLIQUER LES LIGNES DE CODE DES CENTAINES DE FOIS !!

par exemple :

var tableauLois = Array()

// Travail sur les lois françaises
tableauLois = chargementLoisIdentifiant(« fr »)

// Opérations divers sur le tableauLois (quelque soit la langue qu’il contienne)
....

Plus tard :

// Travail sur les lois portugaises

tableauLois = chargementLoisIdentifiant(« pg »)

// Opérations diverses sur les lois chargées dans le tableau

C’est comme ça qu’on utilise une base de données : on ne chargeant en mémoire que les données nécessaires à une opération sur l’instant.

La fonction chargementLoisidentifiant(identifiant:String) est purement fictive. N’ayant pas d’information sur ton projet, je n’ai pas la moindre idée de la manière de charger les données à partir de ta base de donnée.

Si tu tiens absolument à stocker tes données dans des tableaux, il est possible de les associer avec des clés d’identification, pour les encapsuler dans un dictionnaire.

        // Tableaux de valeurs numériques (Int)
        let pg = [0,22,25,22,31,23,30,25,32,35,29,10,51,22]
        let fr = [5, 9, 67, 87, 98, 65]
        let gr = [987, 76, 123, 98]
        let it = [54, 78, 11, 54, 37]
        
        // Création d'un dictionnaire "encapsulant" les tableaux
        var dico = [String:[Int]]()
        
        // Enregistrement des tableaux dans le dictionnaire avec des clés numériques
        dico["pg"] = pg
        dico["fr"] = fr
        dico["gr"] = gr
        dico["it"] = it
        
        // Lecture tableau "pg" - indice 4
        let reponse = lectureDico(dictionnaire: dico, cle: "pg", indice: 4)
        print ("Réponse : ", reponse)
    }
    
    // Lecture des données stockées dans le dictionnaire
    // Si la clé n'existe pas, ou l'indice est trop grand, la réponse est un String vide
    func lectureDico(dictionnaire:[String:[Int]], cle:String, indice:Int) -> String {
        // Y a-t-il un tableau enregistré sous la clé ?
        if let tableau = dictionnaire[cle] {
            // Y a-t-il un indice correspondant ?
            if indice < tableau.count {
                return String(tableau[indice])
            }
        }
        return ""
    }

Réponse : 31

Cela permet de TOUT stocker dans un seul objet (le dictionnaire) et faire des recherches à partir d’une clé (« gp » par exemple et d’un indice numérique). Cela répond peut-être à ton besoin.

M E R C I.
var dico = String:[Int]

    dico["pg"] = pg
    dico["fr"] = fr
    dico["en"] = en

.
.

  •    if let tableau = dico[("\(lang)")] {
          // Y a-t-il un indice correspondant ?
          if amaanNb <= tableau.count {
             travail = tableau[amaanNb]
          }
      }
    

Merci pour ton temps, et le conseil, comme tu mentionne
beaucoup de texte pour expliquer ce que j’avais besoins.
Maintenant avec une 15 de ligne je vais remplacer des
centaines de if. Je parle encore trop. donc
MERCI. :hugs: