我有以下构造,我想简化。我不得不使用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