2010-08-14 4 views
0

Je travaille toujours dans ce programme. La tâche suivante de ma liste de tâches consiste à sélectionner des mots aléatoires dans une liste pré-générée. J'ai trié le code de randomisation, mais j'ai maintenant besoin de connaître la meilleure façon de stocker et de récupérer des mots de ma grande liste (et c'est une liste assez grande - plus de 220 mots).Saisir du texte à partir de fichiers

Depuis que je conçois pour l'iPhone, la mémoire est une préoccupation primordiale. Pour cette raison, j'espérais éviter de charger le fichier entier dans la mémoire. Je préférerais que le fichier soit disposé de manière à ce que je puisse aller directement à une position indexée dans le fichier et saisir uniquement les données dont j'ai besoin. Ce serait bien si je pouvais utiliser le fichier texte que j'ai déjà avec tous les mots, mais cela ne me dérange pas de convertir s'il y a un avantage à une autre méthode.

Quelqu'un a-t-il eu des suggestions sur la meilleure façon de procéder?

-Ash

Répondre

0

Ne vous inquiétez pas de l'espace de stockage (le stockage nécessaire est beaucoup moins que vous pensez). Utilisez un PLIST (Fichier> Nouveau fichier> Ressource (Mac OS X)> Liste des propriétés) et arrayWithContentsOfFile pour que le chargement des mots soit simple (définissez un tableau comme élément racine dans PLIST; la documentation d'Apple contient plus de détails). Ensuite, simplement:

srandom(time(NULL)); 
NSUInteger index = rand() % [array length]; 
NSString *word = [array objectAtIndex:index]; 
+0

Merci! Hélas, une solution n'apporte que plus de problèmes, la nouvelle étant que je n'arrive pas à trouver comment récupérer le chemin complet vers mon nouveau fichier .plist afin que je puisse le charger en premier lieu. Le nom de fichier est randomNames.plist, et il semble être stocké dans un répertoire appelé Ressources. C'est mon code actuel, une idée de ce qui ne va pas? NSString * filePath = [[Chaîne NSString] initWithString: [[NSBundle mainBundle] cheminForResource: @ "randomNames" deType: @ "plist" inDirectory: @ "Ressources"]]; randomNames = [[NSArray alloc] initWithContentsOfFile: filePath]; – Ash

+0

Essayez de supprimer 'inDirectory:'. Ne devrait pas en avoir besoin. –

1

Eh bien, 220 mots n'est pas exactement une grande liste :-) Disons que chaque mot est long, disons 20 caractères. Ensuite, vous parlez d'un 4,4kB maigre. Donc, je ne m'inquiéterais pas de la taille ici. Comme Kevin l'a souligné, [NSArray arrayWithContentsOfFile:...] est probablement le moyen le plus facile (regardez aussi [NSDictionary dictionaryWithContentsOfFile:...]).

Mais si votre liste devient très grande (disons 10000 mots) alors je vous suggère de lire sur SQLite qui est également pris en charge sur l'iPhone.