Question

Dans ma vue de collection, j'ai besoin de générer un index pour chaque article.Comme les éléments sont réorganisés, j'ai besoin de cet index pour mettre à jour son nouveau poste.

Les données sont des entités de données de base dans une entreprise de nsarray gérée. Le plus proche que je suis arrivé à une solution possible implémente cette méthode sur la classe d'entité puis en utilisant ReprésendedObject.dynamicindex pour la lier à l'interface utilisateur.

- (NSNumber *) dynamicIndex
{
    NSInteger r = [[[[self managedObjectContext] registeredObjects] allObjects] indexOfObject:self];
    NSNumber *result = [NSNumber numberWithInt:r];
    return result;
}

Cette solution est montée au mieux et n'est pas vraiment fonctionnelle car elle ne reflète pas nécessairement l'ordre de la vue de la collection.

Quelqu'un a un modèle / mécanisme pour générer ou récupérer des index de l'article dans un NSCollectionView?

Était-ce utile?

La solution

Tout d'abord, assurez-vous de comprendre la différence entre (et utilisez correctement la terminologie de) "entité" et "instance". Il fait toute la différence dans la communication de vos problèmes / solutions avec d'autres.

Deuxièmement: Ne vous inquiétez pas de NSCollectionViewItems ... souciez de chacun de chacun "objet représenté", qui est détenu dans un conteneur.

Troisième: Avez-vous voulu que l'affichage soit un attribut persistant de votre entité ou avez-vous juste besoin de savoir quelle position l'article est en ce moment, peu importe ce qu'il pourrait être plus tard? Question importante.

quatrième: les données de base ne vous donnent pas le concept de collections commandées. Il s'agit de supporter des types de magasins tels que NSSQLITESTORETYPE, où vous ne voulez peut-être pas défaut dans quelques articles (ou un) sans charger toute la liste. Par conséquent, vous êtes seul si vous voulez un ordre de tri persistant. Pour ce faire, ajoutez simplement un attribut à votre entité appelée "sortOrder" et en fais un type de numéro.

cinquième: en raison de la question "Aucune collection de collections ordonnée" ci-dessus, votre tentative de trouver l'index d'une instance donnée de votre entité à partir d'un tableau, construit à partir d'un ensemble, qui a été défectueux avec un ordre non déterministe est condamné à une défaillance. .

Sixth: puisque vous utilisez un contrôleur de tableau, vous devez définir ses descripteurs de tri. Vous voudrez utiliser votre clé "SortOrdon". De cette façon, vos instances récupérées seront toujours conservées par leur "sortOrdon."

septième et enfin: si vous essayez d'obtenir l'index des objets dans votre Set / Array d'objets d'objets , vous voudrez le demander pour ses -arrangedObjects, de sorte que vous 're obtenir l'index de l'objet dans la collection triés les commandes du contrôleur de tableau.

espère que cela aide.

mise à jour pour lion (10,7)

En ce qui concerne mon sixième point: Si vous ciblez 10,7 et plus dans votre application, [NsmanagedObject vous donne maintenant des relations commandées.] [1] Utilisation -MutableOrderedsetValueForkey: et -mutableOrderedsetvalueforkey: Pour définir et récupérer Nsordedsets. YAY!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top