我的应用程序中有很多依赖于日期/时间的功能(例如“如果日期是 x,则显示 y”)。我使用 [NSDate date] 来获取用户的当前日期/时间。我可以测试通过在我的 iPhone 上手动更改日期/时间来更改功能,但我想知道是否有一种方法可以以编程方式覆盖当前时间,以便我可以在模拟器中更快地进行测试。
最佳答案
另一种方法是提供 +(NSDate *)date 的自定义实现。您可以使用 JRSwizzle 调配此类方法.为 NSDate 创建一个小类别:
static NSTimeInterval seconds = 1300000000;
@interface NSDate (Fixed)
+ (NSDate *)fixedDate;
@end
@implementation NSDate (Fixed)
+ (NSDate *)fixedDate
{
return [NSDate dateWithTimeIntervalSince1970:seconds];
}
@end
然后在您想要固定日期的代码中执行以下操作:
NSError *error;
[NSDate jr_swizzleClassMethod:@selector(date) withClassMethod:@selector(fixedDate) error:&error];
NSLog(@"Date:%@", [NSDate date]);
日志打印出这个:
2011-09-01 11:35:27.844 tests[36597:10403] Date:2011-03-13 07:06:40 +0000
关于iphone - 出于测试目的在应用程序中设置 iPhone 日期/时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5730807/