Commande de section NSFetchedResultsController en utilisant l'ordre d'affichage
J'ai actuellement une option qui permet à un utilisateur de modifier l'ordre d'affichage d'une catégorie dans mon application iPhone.
Je veux la section de l'affichage de la table à l'aide d'un NSFetchedResultsController de sorte que les titres de section sont la "catégorie.le nom de" commandé par "catégorie.displayOrder" où "catégorie" a une relation avec l'entité que je suis aller chercher. La seule façon que je peux obtenir le sectionnement de travailler correctement, c'est à l'aide de "catégorie.displayOrder" comme le titre de la section.
NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc] initWithKey:@"category.displayOrder" ascending:YES];
NSSortDescriptor *sortDescriptor2 = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor1, sortDescriptor2, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
[fetchRequest setFetchBatchSize:10];
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:managedObjectContext
sectionNameKeyPath:@"category.name"
cacheName:nil];
Des idées sur comment je peux en citer le titre de la section quelque chose de différent, alors la propriété, je tri?
source d'informationauteur avenged
Vous devez vous connecter pour publier un commentaire.
Ne sais pas si j'ai bien compris votre question complètement, mais je ne quelque chose de semblable dans mon application et voici comment je fonctionne:
Tout d'abord, la fetchedResultsController méthode, où j'ai mis le tri des descriptions et des prédicats de base sur ce que je suis en train de faire. Dans ce cas, je veux trier les titres de film par date de sortie, PUIS par nom. Puis avec ma prédicat je prends des entités spécifiques, à un "type" et dans un certain 'releaseDate.
Dans mon fetchresultscontroller définition, vous définissez la sectionNameKeyPath "releaseDate" donc, mes en-têtes de section sera basé sur une date.
Puis dans ma table vue de source de données délégué méthodes, je retourne le vrai titre pour chaque en-tête après avoir transformé mon NSDate en NSString (n'oubliez pas que vous avez à retourner NSString pour une tableview en-tête de titre.
Donc, si je voulais changer la façon dont les données sont affichées à être organisée par titleName par exemple, j'avais changer mon fetchedResultsController objet:
Et modifier mon tableview:titleForHeaderInSection: source des données méthode de simplement retourner le titleName (ce qui est déjà une chaîne de caractères):
J'espère que cela vous aide à trouver une solution à votre problème spécifique.
Cheers,
Rog
J'ai eu le même problème et j'ai une autre solution - utiliser un transitoire de la propriété pour la sectionNameKeyPath catégorie.nom de section. Il semble que si vous utilisez une base de données de la propriété comme un sectionNameKeyPath il va essayer et de tri.
Donc, en utilisant l'exemple ci-dessus:
Catégorie.h:
Catégorie.m:
Puis dans votre vue-contrôleur:
Grâce à Rog, j'ai été capable d'envelopper ma tête autour de ce problème et trouver une solution. Ce n'est pas aussi propre que je veux donc si quelqu'un a une meilleure approche que j'aimerais entendre à ce sujet.
Basé sur ce que j'ai appris (j'ai peut-être tort, s'il vous plaît laissez-moi savoir) vous ne pouvez nommer les sections (sectionNameKeyPath) par la propriété dans laquelle vous êtes de la commande de votre table. Dans mon cas, je voulais trier mon tableau à l'aide d'une propriété appelée displayOrder, mais je ne voulais pas que mes articles des titres à 0, 1, 2, etc. Au lieu de cela je voulais que les titres de section pour utiliser le titre de propriété "Nom1", "Nom2", etc. qui correspond à la displayOrder. Pour ce faire, je déterminer l'en-tête de titre basé sur le displayOrder dans titleForHeaderInSection:
Merci Rog!
Dans mon cas, j'ai eu à RTFM:
- initWithFetchRequest:managedObjectContext:sectionNameKeyPath:cacheName:
Qui consiste à créer des incohérences dans la Vue Tableau de commande lorsque le
sectionNameKeyPath
ouNSSortDescriptor
propriété de l'objet géré changé pour un ordre de tri différent des autres biens.Source:
https://richardwarrender.com/2010/10/core-data-objects-in-wrong-sections/