Mar*_*tin 6 iphone objective-c nsdate ios
我的应用程序中有许多依赖于日期/时间的功能(例如"如果日期是x,显示y).我使用[NSDate日期]来获取用户的当前日期/时间.我可以通过手动测试功能改变我的iPhone上的日期/时间,但我想知道是否有办法以编程方式覆盖当前时间,以便我可以在模拟器中更快地进行测试.
另一种方法是提供+(NSDate*)日期的自定义实现.你可以使用JRSwizzle来调用这个类方法.为NSDate创建一个小类:
static NSTimeInterval seconds = 1300000000;
@interface NSDate (Fixed)
+ (NSDate *)fixedDate;
@end
@implementation NSDate (Fixed)
+ (NSDate *)fixedDate
{
return [NSDate dateWithTimeIntervalSince1970:seconds];
}
@end
Run Code Online (Sandbox Code Playgroud)
然后在您想要具有固定日期的代码中执行以下操作:
NSError *error;
[NSDate jr_swizzleClassMethod:@selector(date) withClassMethod:@selector(fixedDate) error:&error];
NSLog(@"Date:%@", [NSDate date]);
Run Code Online (Sandbox Code Playgroud)
日志打印出来:
2011-09-01 11:35:27.844 tests[36597:10403] Date:2011-03-13 07:06:40 +0000
Run Code Online (Sandbox Code Playgroud)