Récupérer liste des noms de fichiers .txt
Patyom
Membre
Ok Joanna, j'ai jeté un oeil aussi sur une vidéo qui traite de çà .
autre question : j'ai créé un bout de code pour remplir une Combobox dans laquelle je ne doit prendre que les fichiers dont l'extension est : ".txt", voilà mon code.
// Fonction de recherche de fichiers avec extension : ".txt"
func rechercheListeFichiers(folder: URL) {
let showInvisibles: Bool = false
let fileManager = FileManager.default
do {
let contents = try fileManager.contentsOfDirectory(atPath: folder.path)
contenu = contents
.filter { return showInvisibles ? true : $0.characters.first != "." }
.map { $0.components(separatedBy: ".txt")[0]}
} catch {
print("erreurs")
}
}
Donc je ne prends que les fichiers qui ne commencent pas par "." et je ne prends que tout ce qui se trouve avant le ".txt" mais quelle est l'instruction qui m'empêche de prendre les fichiers qui n'ont pas l'extension ".txt" ?
Comment faites-vous ?
"contenu" est déclaré plus haut dans la Class
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
C'est plus facile que ça :
Si tu ne voulais que les noms des fichiers, tu pourrais faire :
merci,
avec '.map{ $0.lastPathComponent }', tu affiches le nom avec l'extension ?
et sans l'extension ?
PS : Moi qui n'avais jamais tenté de me lancer dans la pratique d'Objective-C et de Swift (maintenant), je me rends compte que c'est époustouflant ce que l'on peut faire et colossal comme logiciel.
Ce sont des emprunts à la programmation fonctionnelle.
Je butte sur des trucs tout bête exemple :
comment vider une tableview ?
Les NSTableViews ne contient aucune donnée.
Renvois 0 de la méthode numberOfRows(in:) du dataSource delegate
Je m'explique :
dans mon viewController j'ai un tableview que je rempli au départ avec des données tirées d'internet mais comme ces données évoluent toutes les 10 mn je clique sur un bouton pour relancer l'extraction des ces données et je les ré-affiche mais encore faut'il que je rase celles qui y sont déjà .
Peut-être faut-il que je les élimine avec une boucle for ou while ?
Tu ne dois pas "remplir" le tableView. Tu devrais l'alimenter d'un delegate NSTableViewDataSource
Bonjour,
Après un break brico et une prise de tête pour trouver comment ôter les données affichées dans la tableView, je vous sollicite car je n'ai pas encore trouvé la solution et ce n'est pas faute d'avoir essayé.
Je me suis basé sur le prog "FileViewer" et je l'ai fait défiler pas à pas sans succès.
Je dois oublier quelque chose dans mon raisonnement.
Qu'est-ce qu'une tableView ? Un composant graphique servant à afficher des données. Mais il ne contient aucune donnés en lui même. Elles lui sont fournies par une dataSource, une source de données, un tableau par exemple. La tableView n'est que la représentation graphique des informations contenues dans le tableau.
Pour " vider " une tableView, tu vides le tableau ou tu changes son contenu. Ensuite tu appelle la méthode reloadData() de la tableView., qui signifie " ton contenu est devenu obsolète. Il faut recharger toutes les données à partir de la dataSource ".
https://developer.apple.com/documentation/uikit/uitableview
Bone tuto sur NSTableView ici : https://www.raywenderlich.com/143828/macos-nstableview-tutorial
Avec les liens vers les autres infos dans la section "Where to Go From Here"
C'est le tuto dont je fais référence dans mon dernier post mais j'ai trouvé (enfin) mon erreur, il y avait une variable que je ne remettais pas à "rien" donc il y avait un cumul de lignes à la suite.
Ouf, je vais pouvoir continuer mon apprentissage.
A plus tard !! et merci
Bonjour,
Pour extraire une donnée que la tableview affiche il faut donc se rapporter à la variable "tableau" qui remplie cette tableview, c'est cela ?
Bonjour,
Maintenant je dois remplacer un élément d'un tableau du genre
Voilà ce que j'ai dans ma variable tableau position 0 :
TB[0] = "01:00;PAYS;Importance;Libéllé"
Je fais ensuite un
TB[0].components(separatedBy: ";")
et je me retrouve avec un nouveau tableau de l'élément TB[0]:
TBInter = ["01:00","PAYS","Faible","Libéllé"]
Là , je voudrais changer "Faible" par "Forte"
Je crois que c'est l'instruction "replaceSubrange" qu'il faut utiliser ?
Je voudrais changer en fait tout ce qui se trouve dans la position 2 entièrement peu importe le texte qui s'y trouve
Ton approche est mauvaise.
Quand on reçoit un JSON, par exemple:
On ne s'amuse pas à décomposer le JSON à chaque fois. Non, on le parse une fois, dans le but d'avoir des classes ou des struct de la forme:
Si à la fin, on veut enregistrer le fichier, alors on reconvertit la liste de Personnes en JSON.
Dans ton cas, c'est pareil: n'essaie pas de changer des bouts de texte. Parcours le texte une fois, extrais des objets. Ensuite, c'est facile de modifier les objets.
P.S. Cocoa utilise l'architecture MVC: https://developer.apple.com/library/content/documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html
Comprends que ta liste fait partie du Modèle.
a
Rien de plus simple, puisque TBInter est un tableau de String. Tu modifie juste son contenu à l'index 2.
a
a
J'ai cogité çà pendant le repas et j'allais l'appliquer quand j'ai lu ton post.
Mais dans quels cas emploie-t'on les fonctions "replaceSubrange"
a
Quand il faut modifier partiellement le contenu d'une chaà®ne unique.
Par exemple, remplacer " Stark " par " Targaryen " dans le texte " John Snow est un Stark ! ".
a
a
a
Ok Draken,
Comment fait-on pour obliger le full screen au lancement de l'appli ?
encore une question un peu bête mais comme je ne connais pas encore parfaitement l'interface IB, ça coince.
Il y a une case à cocher dans les options du projet.
Dans le "Deployment info", je n'ai pas de case à cocher du nom de "requires full screen".
Cela s'arrête à "Main Interface" avec "Main" en libellé
Ce ne serait pas spécifique à IOS ?
Hein, quoi il y a quelque chose en dehors d'iOS ? Désolé, je ne sais pas pour MacOS.
T'inquiètes pas "FullScreen" c'est un détail, déjà tout ce que tu m'as expliqué m'a bien aidé, je suis bien la ligne et ma foi j'arrive à quelque chose.
Le tout c'est de faire en sorte que ce que je ponds serve aussi dans d'autres appli et c'est çà qui prend du temps
Merci
Oups !! Je voulais dire "ce que VOUS m'avez expliqué", je n'oublie pas de remercier les autres intervenants.
Bonjour,
Si vous aviez à mettre, dans un programme SWIFT, une variable accessible par tous les ViewControllers et les classes vous la mettriez où ?
Bonjour Joanna,
Pour éviter à avoir à modifier des variables en dur dans le prog, je créé en fichier un enregistrement avec toutes mes valeurs texte à l'intérieur et je l'appelle mais comme ces valeurs sont dispersées dans tous les viewcontrollers je ne sais pas à quel endroit je doit le placer sans que que je n'ai à l'appeler à chaque fois.
c'est bon tu as compris, je ne sais pas si c'est clair.
Tu peux nous montrer du code ?
Attention ! les variables globales brutes sont à éviter à tout prix :-*
pourquoi sont-elles à éviter ?
Parce que l'on puisse les modifier d'un endroit sans avoir rendu compte qu'elles étaient déjà modifiés d'un autre ; surtout avec les applis multi-fils.