2010-10-20 20 views
0

Le sujet est vague car je ne sais pas comment articuler en une phrase ce que je veux.Ajouter des objets manquants pour créer une collection ordonnée

va ici:

Je NSArray de NSDictionaries. Chaque NSDictionary représente un jour de l'année civile. Chaque NSDictionary a une clé "date" avec une valeur de NSDate. Il devrait y avoir 365 éléments NSDictionary dans le tableau. Le dictionnaire est créé par un serveur que je ne contrôle pas, et parfois il manque 100 jours.

Je dois m'assurer que le tableau contient 365 dictionnaires, chaque jour après le jour suivant.

Je trier actuellement le tableau par date, le parcourir, en copiant les NSDictionaries du tableau actuel vers un nouveau tableau. Ce faisant, je compare la valeur de date du dictionnaire actuel avec la valeur de date pour le dictionnaire suivant. S'il y a plus d'un jour entre les deux dates, j'ajoute suffisamment de nouveaux dictionnaires au nouveau tableau pour couvrir ces jours manquants (et définissez leurs dates en conséquence), puis continuez. Comme les dates sont supposées être ordonnées, je me demande s'il n'y a pas déjà un mécanisme dans le framework ou le langage que je peux utiliser pour dire "Voici un tableau, et ce keypath est supposé être consécutif. les éléments qui manquent, et voici un bloc ou une méthode que vous pouvez utiliser pour les initialiser ".

Quelque chose au sujet de ma méthode se sent juste mal mis en application, ainsi je me tourne vers vous. Pensées?

Merci.

+0

Cela devrait être bien, à mon humble avis. – Altealice

Répondre

1

La façon dont vous l'avez fait semble parfaitement saine, et il n'y a rien à ma connaissance qui le fera automatiquement dans le cadre de base.

0

Ce code va les trier. En ce qui concerne la création des entrées manquantes, vous devrez le faire vous-même.

+0

Merci pour l'exemple de code pour la comparaison. – Woodster

0

Vous n'avez pas besoin de faire le tri:

  1. Créer un tableau avec 365 (ou 366) dictionnaires d'espace réservé (vous pouvez éventuellement utiliser le même pour tous les créneaux horaires, ou utilisez NSNull)
  2. parcourez la liste et déterminez le jour de chaque dictionnaires. Placez chaque dictionnaire dans son emplacement légitime dans votre tableau.
+0

Merci. C'est une technique à considérer à coup sûr. – Woodster