Le tri de tableau d'objets personnalisés à l'aide de la valeur d'un objet interne est variable d'instance
(désolé pour la longueur du titre)
J'ai un objet personnalisé de la Personne, qui à son tour a un NSSet
qui a plusieurs objets personnalisés appelée Rendez-vous. Une Personne peut donc avoir plusieurs rendez-vous. Rendez-vous a les valeurs startTime et endTime.
Ce sont des Données de Base NSMangagedObject
classes.
@interface Person : NSManagedObject
@property (nonatomic, retain) NSString *personName;
@property (nonatomic, retain) NSSet *appointments;
//etc
@end
@interface Appointment : NSManagedObject
@property (nonatomic, retain) NSNumber * startSecond;
@property (nonatomic, retain) NSNumber * endSecond;
//etc
@end
Comment aurais-je obtenir une liste de Personnes, dans l'ordre de la première startSecond au sein de l'un de leurs rendez-vous?
En un seul extraire?
Vous pouvez vous référer à stackoverflow.com/questions/805547/... et stackoverflow.com/questions/1066829/...
Vous devriez probablement faire un custom fonction de comparaison que le premier extrait à la première des dates de rendez-vous d'une personne. (Si vous ajoutez chaque rendez-vous, un par un, à chaque fois que vous pourriez probablement garder une variable qui contient le plus tôt de toute façon, il suffit de cocher le nouveau rendez-vous avec le dernier plus bas de fois). Il vous suffit ensuite de comparer: chaque personne et de leur première date avec les uns les autres avec une simple date de comparaison. Cela devrait être faisable pour NSManagedObjects ainsi, puisqu'ils héritent de NSObject. Je pourrais vous écrire un exemple mais d'abord, laissez-moi savoir si ce est ce que vous cherchez
Est-il un moyen de le faire sans l'ajout de la variable supplémentaire?
Vous pouvez vous référer à stackoverflow.com/questions/805547/... et stackoverflow.com/questions/1066829/...
Vous devriez probablement faire un custom fonction de comparaison que le premier extrait à la première des dates de rendez-vous d'une personne. (Si vous ajoutez chaque rendez-vous, un par un, à chaque fois que vous pourriez probablement garder une variable qui contient le plus tôt de toute façon, il suffit de cocher le nouveau rendez-vous avec le dernier plus bas de fois). Il vous suffit ensuite de comparer: chaque personne et de leur première date avec les uns les autres avec une simple date de comparaison. Cela devrait être faisable pour NSManagedObjects ainsi, puisqu'ils héritent de NSObject. Je pourrais vous écrire un exemple mais d'abord, laissez-moi savoir si ce est ce que vous cherchez
Est-il un moyen de le faire sans l'ajout de la variable supplémentaire?
OriginalL'auteur cannyboy | 2012-01-30
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le tri des descripteurs et des KVC collection opérateurs:
Par exemple, dans un CoreData fetch:
Ou tout simplement le tri d'un tableau:
Plus d'informations sur KVC collection opérateurs peuvent être trouvés dans la KVC Guide de Programmation.
Juste une petite explication: NSSortDescriptors accéder à la valeur par laquelle ils font le tri à l'aide de la Clé-Valeur-de Codage. Ainsi, vous pouvez utiliser la touche "[email protected]" ce qui signifie en gros: dans la collection rendez-vous, obtenir le startSecond de l'objet, dont la startSecond est le plus petit parmi les objets de la collection. il suffit ensuite de trie par rapport à la valeur retournée
Ce roi de descripteurs ne sont pas autorisés pour NSFetchRequest ("chemin d'accès clé contenant KVC globale où il ne devrait pas être une" erreur). Mais accessible pour récupéré résultat.
OriginalL'auteur Ell Neal
Si vous avez les données dans un NSArray formulaire, vous pouvez les trier comme ceci:
NSSortDescriptor
etCoreData
ne sont pas liés. Vous pouvez utilisersortUsingDescriptors:
array méthode pour trier les éléments avecNSSortDescriptor
.OriginalL'auteur Alex Stanciu
Une suggestion:
Ce serait très lent, car il aurait besoin de vous engager dans la mémoire de tous les rendez-vous des objets.
OriginalL'auteur onekiloparsec