2011-09-09 2 views
0

J'ai la construction suivante, que je voudrais simplifier. J'ai dû utiliser un NSString (?) Afin de se débarrasser du NSNumber vs. NSDecimalNumber du compilateur Warning.Simplify NSDecimalNumber initialisation

NSDecimalNumber *ticksSinceSeventies = [NSDecimalNumber decimalNumberWithString:[NSString stringWithFormat:@"%d",[self timeIntervalSince1970]]];

Merci pour votre aide!

+1

Je réalise que cela ne répond pas exactement à votre question, mais pourquoi gardez-vous un double (NSTimeInteval) dans un NSDecimalNumber; NSNumber est bien pour les doubles. NSNumber * ticksSinceSeventies = [NSnumber numberWithDouble: [self timeIntervalSince1970]]; –

+1

Dan a raison. L'utilisation de NSDecimalNumber est pour l'arithmétique de base-10 précise. Puisque vous traitez avec NSTimeIntervals, il est raisonnable de supposer que vous avez affaire à des dates, et il y a tout un document traitant de [Calendrical Calculations] (http://developer.apple.com/library/ios/#documentation/Cocoa/ Conceptuel/DatesAndTimes/Articles/dtCalendricalCalculations.html) – Abizern

+0

@Daniel Vous devriez poster une réponse sinon je ne peux pas résoudre ce problème et vous n'avez pas les accessoires pour cela :-) – Besi

Répondre

2

Si vous n'utilisez que NSTimeInterval s, qui sont des doubles, alors l'arithmétique de base 10 que NSDecimalNumber vous offre n'est pas vraiment nécessaire. Vous pouvez simplement utiliser NSNumber à la place.

Votre constructeur serait donc juste être:

NSNumber *ticksSinceSeventies = [NSNumber numberWithDouble:[self timeIntervalSince1970]]; 

(en supposant l'auto est une sous-classe NSDate, ou c'est à l'intérieur d'une méthode de catégorie).

0

Voici une façon:

[NSDecimalNumber decimalNumberWithString:[[self timeIntervalSince1970] stringValue]]; 

Il peut y avoir des moyens de simplifier encore il mieux, mais je ne suis pas au courant.

+0

Cela ne fonctionne pas: 'typedef double NSTimeInterval; 'donc stringValue ne fonctionne pas – Besi

+0

Je pensais que votre timeIntervalSince1970 est dans NSNumber, lors de la lecture de votre" NSNumber vs NSDecimalNumber compilateur avertissement ". – Saran

+0

Assez juste ... J'ai déjà reçu cet avertissement du compilateur quand j'ai essayé d'utiliser un NSInteger. – Besi