2010-03-14 2 views
1

J'essaie de créer un index représentant la première lettre de chaque enregistrement dans un magasin de données de base à utiliser dans un contrôleur de vue de table. J'utilise un extrait du code de la documentation d'Apple. Je voudrais simplement produire un tableau ou un dictionnaire de valeurs distinctes comme le résultat. Mon magasin a déjà le caractère défini dans chaque objet d'enregistrement. Questions:Tableau de valeurs distinctes pour l'index de View Controller utilisant des données de base

1) J'ai un problème de compréhension de NSDictionaryResultType. Où l'objet dictionnaire résultant est-il reçu afin que je puisse assigner ses clés au contrôleur de vue? Le code semble retourner seulement un tableau.

2) Si j'inclue la ligne contenant NSDictionaryResultType, je n'ai aucun retour.

3) Je réalise que je pourrais le faire en boucle, mais j'espère que cela fonctionnera.

Merci!

NSEntityDescription *entity = [NSEntityDescription entityForName:@"People" inManagedObjectContext:managedObjectContext]; 

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
[request setEntity:entity]; 

     [request setResultType:NSDictionaryResultType]; // This line causes no no results. 

[request setReturnsDistinctResults:YES]; 
[request setPropertiesToFetch :[NSArray arrayWithObject:@"alphabetIndex"]]; 

NSError *error; 
NSArray *objects = [managedObjectContext executeFetchRequest:request error:&error]; 

Répondre

0

Merci gerry3. Je l'ai compris. J'avais modifié ma classe de données et mon magasin. J'ai supprimé le fichier SQLite et recompilé.

1
  1. La demande d'extraction retourne un tableau d'objets dictionnaire (par opposition à un tableau d'objets gérés). Les dictionnaires contiennent uniquement des paires de valeurs clés pour les propriétés spécifiées dans la requête d'extraction. Etes-vous sûr qu'il ne retourne pas un tableau d'objets de dictionnaire?

  2. Quelle erreur voyez-vous?

MISE À JOUR

Votre code fonctionne exactement comme je l'ai aperçue dans 1. Si vous ne voyez pas ce résultat, peut-être votre modèle de données ou données ne sont pas comme vous l'avez décrit (Etes-vous sûr "alphabetIndex" est défini pour chaque objet?).

A partir du tableau des objets (des dictionnaires), il suffit de faire ceci pour obtenir le tableau que vous voulez:

NSArray *letters = [objects valueForKey:@"alphabetIndex"]; 
+0

Si j'ajoute la ligne contenant "setResultType: NSDictionaryResultType" les objets array * résultants, après l'extraction, sont nuls. Si je commente la ligne, j'obtiens 63 objets qui représentent tous les objets de l'entité "People". Il existe un attribut appelé "alphabetIndex" qui contient les valeurs a-z représentant la première lettre du nom de la personne. –

+0

Pour faire court, je voudrais un dictionnaire ou un tableau représentant les valeurs uniques. Si les seuls noms de personnes présents étaient Anston, Franks, Johnson et Smith, je créerais un tableau avec les valeurs "A, F, J, S". –

+0

Cela a du sens. Créer ce tableau est très facile comme je l'ai montré dans une mise à jour ci-dessus. – gerry3

Questions connexes