# Plist et dictionnaire



## maximelat (1 Août 2012)

Bonjour bonjour, 

Bon je suis très néophyte mais j'espere enfin arrivé à mes fins..

Bref j'aimerais savoir si Xcode est capable de classer des mots dans ses plist 
L'objectif étant d'obtenir 25*25 fichiers nommés de la façon suivante : 
0-0.plist pour tous les mots commancants et finnissant par a 
1-3.plist pour les mots commençant par b et finissant par d
Etc.. 

Mon objectif est de créer un dictionnaire français se basant sur :

0-0.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
* <string>a</string>
* <string>area</string>
* <string>agenda</string>
* <string>arena</string>
* <string>adelarthrosomata</string>
.
.
.

</array>
</plist>

J'ai pas vraiment la liste des mots francais car j'ai juste récupéré le fichier 

file://localhost/System/Library/LinguisticData/fr/lemmas.dat

Et il me manque toutes les conjugaisons du Trie.dat car j'arrive pas bien à le lire..
Enfin bref j'ai pas mal de chose à faire donc je suis preneur si quelqu'un saurais comment récupérer "tout" les mots français 

C'est comme si j'avais besoin des mots de référence pour un correcteur orthographique

Bon jespere avoir été claire.. 

Ah oui et j'ai réussis à classer 150000 mots par ordre alphabetique chacune des lettres dans son fichiers txt correspondant,en colonne, mais je narrive pas à les copier coller dans Xcode c'est peut être bête mais je ne rentre que le premier mot de la sélection..

Merci d'avance (le plus important c'est créer les fichiers la liste de mot est vraiment secondaire )


----------



## tatouille (1 Août 2012)

```
[array sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];

ou

NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"your custom descriptor with locale"  ascending:YES];
[array sortUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];

ou block equivalent
```
https://developer.apple.com/library...Foundation/Classes/NSArray_Class/NSArray.html

https://developer.apple.com/library...asses/NSLocale_Class/Reference/Reference.html

les plists sont juste une representation sérialisée de collections tu devrais essayer d'utiliser le bon vocabulaire donc de faire un travail de compréhension nécessaire.


----------



## maximelat (1 Août 2012)

Tout d'abord merci de ta réponse, pour le moins, très rapide!

C'est sur que je ne maîtrise pas le vocabulaire mais vu que j'ai les fichiers type je connais le résultat. Je les les ai ouvert dans le terminal et dans Xcode pour comprendre un peu comment ça s'arrange.. 
Je ne comprend pas comment utiliser les codes que tu m'as proposé, je suis vraiment très novice.. Je vais devoir écrire un code, xcode propose beaucoup de type de fichier, lequel choisir du coup ? J'avais créer juste un fichier property list pour l'instant


----------



## tatouille (1 Août 2012)

transpire et revient apres


----------



## maximelat (1 Août 2012)

Ahah ok , je reviens demain alors car je ne pensais pas avoir de réponse si rapide et j'ai fermé mon ordi ! (vive le smart phone ..)


----------



## tatouille (1 Août 2012)

rallume ton ordi et résout le maintenant, c'est ce qu'on appelle transpirer.


----------



## maximelat (1 Août 2012)

J'attend aussi le soleil et l'aide d'un tiers qui dors actuellement, avec nos deux cerveaux ça sera mieux, car le sommeil m'appele :sleep:, je transpire assez avec la chaleur de la région 

---------- Post added at 02h35 ---------- Previous post was at 02h31 ----------

J'attend aussi le soleil et l'aide d'un tiers qui dors actuellement, avec nos deux cerveaux ça sera mieux, car le sommeil m'appele :sleep:, je transpire assez avec la chaleur de la région 

Et merci encore


Happy 5000ieme message


----------



## maximelat (1 Août 2012)

J'ai chercher ce matin, mais sans resultat je sais vraiment pas quoi en faire de tout ca.. Pourrais tu dire plus?
j'ai besoin de creer plusieurs plist de manière automatique

---------- Post added at 13h40 ---------- Previous post was at 13h30 ----------

Comment creer une plist avec plusieurs item en même temps a partir d'un seul fichier regroupant lensemble des mots? Car le copier coller ne permet que la copie du premier terme de la selection


----------



## Larme (1 Août 2012)

Copier/coller ?
Tu veux dire un bête Cmd+C/Cmd+V ?
Les fichiers .plists sont des fichiers contenant des balises XML qui permettent d'avoir cette présentation en « vecteur ».
Suuffit de l'ouvrir avec un éditeur de texte.


----------



## maximelat (1 Août 2012)

Oui enfin.. Le soucis c'est que j'ai un fichier avec par exemple


Abaisser
Accés
Batterie


Et je veux le transformer En un fichier Plist 
Avec 

<string>abaisser<string>
<string>accès<string>
<string>batterie<string> 

Mais avec 300 000 mots .. 

J'avais essayer de copier coller le fichier initial depuis traitement de text vers Xcode mais seul le premier mot etait créé :  item 0 de type string et de value le premier mot de la Sélection
 rectification : enfait il copie la sélection comme ça : <string>Abaisser
Accés
Batterie
<string>


----------



## Lio70 (1 Août 2012)

Donc tu dois developper une app qui :
- charge les donnees d'un fichier texte
- selectionne et trie les donnees
- encapsule chaque objet (chaque mot) dans une balise <string>
- sauve le resultat dans un autre fichier, une plist

Tu manques apparemment de la connaissance de concepts basiques en programmation. Consulte un site comme Le site du zero pour des tutoriels.

Apres cela, consulte la doc Apple que Tatouille t'a renseignee, mais aussi NSSavePanel, NSString, NSMutableString.

Et savoir faire une boucle pour chaque objet d'un array: exemple "for (id object in array) { ... }"
afin d'y appliquer la balise <string>.
Ajouter chaque ligne a la precedente avec "appendString".
Et quand tu sauves, choisir "encoding:NSUTF8StringEncoding".

Maintenant... transpires un bon coup


----------



## tatouille (1 Août 2012)

je te propose de faire ca d'abord en C sans locale et encoding et une function 
de callback utilisant strcmp pour la comparaison:

// what's a struct, how to make a dynamic array of strings which are char arrays 
struct {
-- const char value[512];
-- char **buckets;
} //array

// memoire what it is
alloc first array;

// file system access what is 
-- fopen(fullpathin, mode);
---- for each line fread
------ feed and realloc buckets
fclose(fullpathin);

// function pointer, callback what is 
int cmp(const void *a, const void *b) 
{ 
-- const char **ia = (const char **)a;
-- const char **ib = (const char **)b;
-- return strcmp(*ia, *ib);
}

// built-in helper  quicksort algorithm what is (math)
qsort(array, cmp);

-- fopen(fullpathout, mode);
---- for each entry in array
------ fwrite (buckets_)
fclose(fullpathout);

// why should I care?
free(array);

quand tu seras deja faire ca tu pourras ouvrir cocoa (ecrit en obj-c qui est un runtime objet pour C), qui serialize read/write automatiquement, ses collections avec l'appel de simple functions dans une architecture objet complexe héritée de conceptes objets a la smalltalk et pas accessible pour le néophyte qui ne sait pas ce qu'est un callback, un typage dynamique, une class, un MVC et cetera.

pour te donner une échelle, nous concernant ce programme devrait prendre grosso modo 5 minutes a etre écrit, compilé et executé, pour toi cela va te prendre les 2 prochaines semaines voir plus, parce qu'il y a tout un monde entre avant de pouvoir utiliser un language il faut apprendre celui-ci et en ce qui concerne, les languages de secondes generations, ce qu'est une allocation memoire (RAM pour faire simple car c'est un tout petit plus compliqué la relation entre ton noyau (OS) et sa VM (virtual memory) qui mappe la RAM reelle (memoire physique) ref: protected memory), une adresse, une reference d'adresse, une valeur.

voila transpire._


----------



## maximelat (6 Août 2012)

Oups j'ai mis résolu mais apparemment mon post ne s'est pas téléchargé ..

Donc voici le lien - pour quelqu'un qui aurait l'étrange envie de faire comme moi - vers le fichier que j'ai finalement réussit à créer : http://uploading.com/files/get/c8da2c51/English.zip


Merci à tous en tous cas!


----------

