我有一个使用CoreData的应用程序。其中一个实体包含date
属性,这是一个日期。我正在编写一个测试,以检查传递给该实体类的类方法的时间戳是否正在转换为正确的NSDate
。比较NSDate对象
这里是我的测试代码:
NSDate *now = [NSDate date];
NSTimeInterval ts = [now timeIntervalSince1970];
// paramDict is a dictionary with attributes and values
[paramDict setValue:[NSNumber numberWithDouble:ts] forKey:@"date"];
MyEntity *myEntity = [MyEntity entityWithAttributes:paramDict inContext:testMOContext];
STAssertTrue([now isEqualToDate:[myEntity date]], @"dates were not equal");
这仅仅是用来检查是否所有参数都正确设置整个测试的一个片段。但有趣的是,日期断言检查随机失败。我认为失败与双精度浮点数的丢失有关?我应该如何在这种情况下检查日期?
更新
的时间戳转换为日期的方法是这样的:
NSDate *date = [NSDate dateWithTimeIntervalSince1970:[[paramDict valueForKey:@"date"] doubleValue]];
[newObject setDate:date];
“浮点数学不准确”[详细信息](http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm)。您不应该尝试比较浮点数是否相等。 – progrmr