0

J'utilise des données de base avec NSFetchedResultController. Dans ce cas, j'ai un nombre de groupes d'utilisateurs n et un utilisateur peut sélectionner un groupe particulier ou sélectionner all group. Donc, manuellement, j'ai ajouté All group titre, static ID et le contenu pertinent à la base de données. Il s'agit de mon code FRC. J'utilise tri par nom. Un nom de groupe commence par le numéro. En raison de ce All group ne pas placer en premier lieu.Tri personnalisé dans iOS, je veux afficher le titre par défaut (Tous les groupes) au dessus de Coredata

Est-ce possible All group est-ce toujours top sur tri?

supplémentaire: Je me sers vue de table avec option de recherche

Exemple: @[@1, @5, @"text", @"aaaaaaa", @"All group"]. Ici All group apparaissent toujours en haut de la liste. Comment puis-je trier comme ça.

Sortie: @[@"All group", @1, @5, @"aaaaaaa", @"text"]

+0

Ne résout pas cela dans le modèle de données, mais ajoute manuellement la cellule statique dans TableViewDataSource. Donc l'objet à l'index 0 est la cellule 'All groups', n'oubliez pas de soustraire 1 de l'index quand vous saisissez l'élément' FetchedresultsController'. – rckoenes

+0

Merci. Maintenant, je travaille seulement genre de sorte seulement. Que pensez-vous de la réponse @jonRose? Lequel est bon, comme efficace, vitesse, etc., – user3589771

+0

Comme je le mentionne avant il y a statique 'ID' pour' All group', Maintenant j'ai ajouté et prédicat 'NSPredicate * allGroupPredicate = [NSPredicate predicateWithFormat: @"% K! = % d ", NSStringFromSelector (@selector (assetGroupID)), allUserGroupID];' avec ceci. Sur 'cellForRowAtIndexPath' Mettez la configuration de cellule statique pour' All group'. Est-ce ce que vous essayez de transmettre? – user3589771

Répondre

0

vous et je sais que « Tout groupe » est spécial parce que nous lire et de comprendre le mot, mais les données de base n'a aucun moyen de savoir que le « groupe Tous » est spécial; tout ce qu'il voit c'est qu'il commence par un "A". Vous pouvez ajouter une autre propriété à votre entité isAllGroup et la trier d'abord, puis par assetGroupName.

Ou vous pouvez avoir une propriété 'groupOrder' qui est 0 pour le groupe "all" et 100 pour tous les autres groupes. Cela vous permet d'avoir plus de place pour avoir d'autres commandes de groupes spéciaux sans créer de nouvelle propriété.

Une approche encore plus générale serait d'ajouter une propriété assetGroupNameForSort et trier qu'au lieu de assetGroupName qui est utilisé uniquement pour l'affichage. Pour la plupart des groupes, les valeurs sont identiques, mais pour "All Group", c'est "__All Group" ou quelque chose comme ça. Cela peut également être utilisé pour résoudre un problème qui peut se produire avec des noms qui sont dans des langages de différences qui sont triés de manière inattendue.

Je recommanderais la première approche, ajoutez simplement une propriété 'isAllGroup'. C'est le plus simple et les données sont facilement compréhensibles.

Également: problème mineur - un fetchedResultsController ne respecte pas FetchBatchSize afin que vous puissiez le supprimer.

+0

Merci d'avoir signalé le problème mineur. Pouvez-vous expliquer pourquoi? Parce que 'FetchBatchSize' fait aussi partie du résultat d'extraction signifie' NSFetchRequest'. – user3589771

+0

Je ne souhaite pas mettre à jour (ou versionner) la base de données pour cette modification mineure. Je vais donc ajouter un autre prédicat 'AND'' NSPredicate * allGroupPredicate = [NSPredicate prédicatWithFormat: @ "% K! =% D", NSStringFromSelector (@selector (assetGroupID)), allUserGroupID]; 'avec ceci. Sur 'cellForRowAtIndexPath' Mettez la configuration de cellule statique pour' All group'. Et encore une fois merci pour plus d'option pour trier. – user3589771

+0

si un fetchedResultsController a respecté batchSize car apple ne l'a pas écrit pour respecter batchSize. Je suppose qu'ils ont fait cela parce que cela ajouterait énormément de complexité au code. Par exemple, s'il y avait une insertion, cela provoquerait aussi une suppression (car elle dépassait le batchSize). –