2011-06-26 5 views
0

Je prévois de sauvegarder et de manipuler les informations de temps dans une application iPhone. Étonnamment, je trouve très peu de discussion dans les recherches sur les meilleures pratiques dans iOS. Mon objectif est de facilement: -calculer les durées à partir des champs de début, de fin, de rupture. - Entrées ronds par incréments par défaut sélectionnables par l'utilisateur (15 min, 30 min, etc.). -sum, avg et graphe les résultats comme vous le souhaitezChamps de temps et calculs - Meilleures pratiques

Ma question est, quelle est la meilleure façon d'enregistrer les données de temps? Est-ce que je sauvegarde les dates complètes en tant que NSDate? Est-ce que j'analyse la partie temps uniquement? Les types CFAbsoluteDate ou CFInterval sont-ils une meilleure solution? Ceux-ci sont étrangers à moi, mais la recherche dans les documents de référence Apple semble toujours se terminer là-bas. Malheureusement, je ne vois aucun exemple de bases de données citées.

Je peux envisager la plupart de ce que j'ai l'intention de faire, mais en espérant quelques pointeurs avant de commettre un modèle dans un sens ou dans l'autre.

Répondre

1

Sauf si vous êtes extrêmement limité en mémoire, NSDate est recommandé. Il a des fonctions de différence de temps natif, ce qui rend le calcul des intervalles de temps aussi simple que:

NSDate *savedDate = [self getDateSavedFromEarlier]; // retrieve saved date 
NSDate *anotherDate = [self getAnotherDateSavedFromEarlier]; // retrieve another saved date 
NSTimeInterval interval = [savedDate timeIntervalSinceDate:anotherDate]; 
+0

alors recommanderiez-vous d'enregistrer la date entière/heure ou juste l'heure elle-même? Certains ont suggéré d'utiliser une date relative de 0 ou autre et je l'ai vu faire de cette façon en VB. –

+0

Sauvegardez simplement tout. La taille de ces données n'est pas grande; il suffit de le sauvegarder. –

0

sans en savoir plus sur l'application - Je pense que vous devriez juste commencer par le stockage NSDate s.

Vous arrondissez les choses par incréments importants, il semble donc peu probable que vous générez/stockiez des dates sur des volumes où cela va faire trop de différence.

La meilleure pratique consiste à ne pas compliquer les choses et à ne pas optimiser avant d'avoir profilé l'application.