我有以下構造,我想簡化。我不得不使用NSString(?)來擺脫NSNumber與NSDecimalNumber編譯器的警告。簡化NSDecimalNumber初始化
NSDecimalNumber *ticksSinceSeventies = [NSDecimalNumber decimalNumberWithString:[NSString stringWithFormat:@"%d",[self timeIntervalSince1970]]];
感謝您的幫助!
我有以下構造,我想簡化。我不得不使用NSString(?)來擺脫NSNumber與NSDecimalNumber編譯器的警告。簡化NSDecimalNumber初始化
NSDecimalNumber *ticksSinceSeventies = [NSDecimalNumber decimalNumberWithString:[NSString stringWithFormat:@"%d",[self timeIntervalSince1970]]];
感謝您的幫助!
如果您只使用NSTimeInterval
s,這是雙打,那麼NSDecimalNumber
所提供的10進制算術並不是真的需要。您可以改用NSNumber
。因此
你的構造也只是:
NSNumber *ticksSinceSeventies = [NSNumber numberWithDouble:[self timeIntervalSince1970]];
(假設自爲NSDate
亞類中,或者這是一種類方法內側)。
這裏有一種方法:
[NSDecimalNumber decimalNumberWithString:[[self timeIntervalSince1970] stringValue]];
有很多方法可以簡化仍然更好,但我不知道。
我知道這並不完全回答你的問題,但你爲什麼要在NSDecimalNumber中存儲一個double(NSTimeInteval) NSNumber適合雙打。 NSNumber * ticksSinceSeventies = [NSNumber numberWithDouble:[self timeIntervalSince1970]]; –
丹是正確的。 NSDecimalNumber的用途是用於精確的基10算術。由於您正在處理NSTimeIntervals,因此假設您正在處理日期,並且有一個涉及[日曆計算]的整個文檔(http://developer.apple.com/library/ios/#documentation/Cocoa/ Conceptual/DatesAndTimes/Articles/dtCalendricalCalculations.html) – Abizern
@Daniel你們應該發表一個答案,否則我不可能解決這個問題,你不會得到它的道具:-) – Besi