2010-06-06 6 views
2

Je sais que je dois compliquer cela parce que NSTimeInterval est juste un double, mais je n'arrive pas à le faire correctement car j'ai eu très peu d'exposition à l'objectif c . le scénario est le suivant:Convertir une chaîne de nombres en NSTimeInterval

L'entrée de données dans l'application contient deux valeurs, startTime et endTime, qui correspondent aux durées en millisecondes. Les variables que je veux maintenir ces valeurs sont NSTimeInterval *start; NSTimeInterval *end;

j'ai décidé de les stocker sous forme NSTimeIntervals mais im pensant que je devrais peut-être de les stocker en double parce Theres aucun besoin pour NSTimeIntervals car les comparaisons peuvent tout simplement être fait avec une primitive . De toute façon, je voudrais savoir ce que je suis absent à l'étape suivante, où je tente de convertir chaîne à NSTimeInterval:

tempString = [truckArray objectAtIndex:2]; 
    tempDouble = [tempString doubleValue]; 

Maintenant il est stocké en toute sécurité comme un double, mais je ne peux pas obtenir la valeur dans un NSTimeInterval. Comment cela devrait-il être accompli? Merci

Répondre

11

Vous ne devez pas jeter, vous pouvez simplement écrire ceci:

NSTimeInterval timeInterval = [[truckArray objectAtIndex:2] doubleValue]; 

Le casting est inutile, et moulages supplémentaires juste à rendre votre code source plus difficile à mettre à jour et les changements dans l'avenir parce que vous J'ai dit au compilateur de ne pas vérifier vos expressions castées.

2

Les variables que je veux maintenir ces valeurs sont NSTimeInterval *start; NSTimeInterval *end;

Attention, NSTimeInverval est un typedef pour un type primitif C, il est un objet Objective-C. Je ne pense pas que vous avez réellement besoin des pointeurs vers ces types dans ce scénario, vous devez donc les déclarer comme ceci:

NSTimeInverval start; 
NSTimeInterval end; 

Vous pourriez obtenir des erreurs parce que dans C, vous ne pouvez pas convertir les types à virgule flottante à POINTER- les types.

Questions connexes