Tengo mucha funcionalidad en mi aplicación que depende de la fecha/hora (por ejemplo, "si la fecha es x, muestra y). Utilizo [NSDate date] para obtener la fecha/hora actual del usuario. Puedo probar la funcionalidad al cambiar manualmente la fecha/hora en mi iPhone, pero me pregunto si hay una forma de sobrescribir programáticamente la hora actual para que pueda probar en el simulador y más rápidamente.Establecer la fecha y hora de iPhone dentro de la aplicación para fines de prueba?
Respuesta
Puede crear objetos NSDate con cualquier fecha ./hora que desee ejecutar su código a través de un método para obtener "la corriente" tiempo y dentro de este método, ya sea devolver la fecha real para la producción o alguna fecha de su elección para la prueba
dateByAddingTimeInterval:.
Devuelve un nuevo objeto NSDate que se establece en un número determinado de segundos en relación con el receptor.
- (id)dateByAddingTimeInterval:(NSTimeInterval)seconds
Parámetros segundos el número de segundos para añadir al receptor. Use un valor negativo por segundos para que el objeto devuelto especifique una fecha antes del receptor. Valor devuelto Un nuevo objeto NSDate que se establece en segundos segundos en relación con el receptor. La fecha devuelta podría tener una representación diferente a la del receptor.
fuente: la documentación: p
Otra forma de hacerlo es proporcionar una implementación personalizada de + (NSDate *) Fecha. Puede swizzle este método de clase usando JRSwizzle. Hacer una pequeña categoría para el NSDate:
static NSTimeInterval seconds = 1300000000;
@interface NSDate (Fixed)
+ (NSDate *)fixedDate;
@end
@implementation NSDate (Fixed)
+ (NSDate *)fixedDate
{
return [NSDate dateWithTimeIntervalSince1970:seconds];
}
@end
Luego, en el código en el que desea tener fecha fija haga lo siguiente:
NSError *error;
[NSDate jr_swizzleClassMethod:@selector(date) withClassMethod:@selector(fixedDate) error:&error];
NSLog(@"Date:%@", [NSDate date]);
se imprime el registro fuera de este:
2011-09-01 11:35:27.844 tests[36597:10403] Date:2011-03-13 07:06:40 +0000
Cree una categoría en NSDate
y anule +[NSDate date]
método
+ (instancetype)date
{
return [NSDate dateWithTimeIntervalSince1970:100000]; // Replace with any date you want
}
- 1. Selector de fecha y hora: configuración de la fecha y hora de apertura
- 2. Obtener la fecha y hora de la zona horaria del dispositivo iPhone actual desde la aplicación UTC-5 de la zona horaria y la aplicación iPhone?
- 3. No se puede establecer la etiqueta Fecha de toma/Fecha y hora usando ExifInterface en Android
- 4. Python: obtener la fecha y hora de la última hora
- 5. Herramienta de prueba de rendimiento para la aplicación de iPhone
- 6. Establecer formato predeterminado de fecha y hora C#
- 7. pitón de localización de fecha y hora
- 8. Yendo de la fecha de twitter para Python fecha de fecha y hora
- 9. Conversión de la cadena de fecha y hora de la fecha a la fecha
- 10. Establecer la parte del tiempo de la variable de fecha y hora en 18:00
- 11. iPhone + en la compra de la aplicación de prueba
- 12. de fecha y hora
- 13. Rieles: Obtenga la hora de una fecha y hora
- 14. iPhone: Prueba de aplicación y ubicación principal
- 15. Selector de fecha para la aplicación web iPhone
- 16. Fecha/hora actual de la fecha de la secuencia?
- 17. selector de fecha y hora para jsf
- 18. Cambiar la fecha y hora en MusicSequence
- 19. Establecer la parte de tiempo de una variable de fecha y hora
- 20. Sello de fecha/hora eficientemente calculado para fines de registro en unix/win32
- 21. Hipervínculos dentro del texto "sobre" para la aplicación de iphone
- 22. Django Quiero imprimir la fecha y la hora para hoy
- 23. Garantizando la fecha/hora correctas
- 24. Cómo obtener la fecha y hora del sello de fecha y hora
- 25. Como llegar hora y la fecha del sello de fecha y hora en php
- 26. Cómo obtener la fecha y la hora actual de la columna Fecha/Hora en la lista personalizada de SharePoint
- 27. fecha y la fecha y hora en Django
- 28. C++ fecha y hora
- 29. añadiendo comillas alrededor de la fecha y la hora, C#
- 30. Consulta para convertir de fecha y hora a fecha mysql
No creo que quiera un método de prueba de marco sino más bien un método de sistema para realizar una prueba de "avance" en toda la aplicación. Es como cuando prueba una aplicación que no es para dispositivos móviles configurando el tiempo del sistema de la unidad de escritorio en algo así como 1/1/2040 para ver si eso rompe algo. – TechZen