Necesito obtener el número de versión de la aplicación del usuario y compararlo con la versión actual de la aplicación en mi servidor. Si la versión de la aplicación del usuario es inferior, recibirá una ventana emergente para actualizar su aplicación. Mientras hago esto, necesito comparar la versión de la aplicación con las versiones disponibles. ¿Cómo puedo comparar las cadenas que están en el formato "2.0.1"
y "2.0.09"
y obtener la más alta, en Objective-C?Comparando cadenas con el formato "2.0.1", "2.0.09"
Respuesta
No he probado esto (no en OS X ahora) así que esta es una toma completa en la oscuridad. ¿Qué le parece usar el método compare:options:
de la clase NSString?
NSString *v1 = "2.0.1";
NSString *v2 = "2.1";
NSComparisonResult *r= [v1 compare:v2 options:NSNumericSearch];
if (r == NSOrderedSame || r == NSOrderedDescending) {
// do
} else {
// do
}
¿Eso funciona?
Si las cuerdas son todos de la forma "2.0.1", etc. sólo se puede comparar con ellos al igual que las opciones correctas:
([localVersionString compare:currentVersionString
options:NSNumericSearch] != NSOrderedAscending);
Lo anterior volvería "YES
" si la hay localversion más antiguo que la versión actual en el servidor, y "NO
" de lo contrario (suponiendo que tengo esto en la forma correcta).
Esto es lo que se suele hacer al verificar la versión local de iOS instalada en un iDevice.
Respondido en esta publicación; Compare version numbers in Objective-C
Eche un vistazo a mi categoría NSString que implementa la comprobación de versión fácil en github; https://github.com/stijnster/NSString-compareToVersion
[@"1.2.2.4" compareToVersion:@"1.2.2.5"];
Esto devolverá un NSComparisonResult que es más precisa a continuación, utilizando;
[@"1.2.2" compare:@"1.2.2.5" options:NSNumericSearch]
Ayudantes también se agregan;
[@"1.2.2.4" isOlderThanVersion:@"1.2.2.5"];
[@"1.2.2.4" isNewerThanVersion:@"1.2.2.5"];
[@"1.2.2.4" isEqualToVersion:@"1.2.2.5"];
[@"1.2.2.4" isEqualOrOlderThanVersion:@"1.2.2.5"];
[@"1.2.2.4" isEqualOrNewerThanVersion:@"1.2.2.5"];
gracias Stijnster, su categoría es genial ... pero realmente va a necesitar una versión Swift ... – wuf810
- 1. Comparando cadenas en EL
- 2. C# Comparando cadenas con casos diferentes
- 3. comparando cadenas en vb
- 4. comparando cadenas en bash
- 5. Comparando cadenas de fechas en Java
- 6. comparando dos cadenas en SQL Server
- 7. Comparando dos cadenas en inglés para similitudes
- 8. comparando 2 cadenas alfabéticamente con fines de clasificación
- 9. Comparando cadenas largas por sus valores hash
- 10. C# formato de cadenas
- 11. Cadenas de formato en el método Console.WriteLine
- 12. Comparando con valores NULL
- 13. C#: Comparando con nula
- 14. Ordenando y comparando cadenas por localidades en Haskell?
- 15. Cadenas de formato en java
- 16. formato de cadenas en Python
- 17. Comparando cadenas de fechas usando la biblioteca de tiempo joda
- 18. VLC 2.0.1 Ajustar Subtitle Tming
- 19. formato de cadenas en Haskell
- 20. formato de cadenas en Python
- 21. comparando cadena con la enumeración
- 22. Comparando Factory Girl con fabricación
- 23. ¿Formato correcto para cadenas/números que comienzan con cero?
- 24. Uso de Oracle 10g CLOB con Grails 2.0.1
- 25. ¿Cómo ejecuto varias especificaciones funcionales con TestServer en Play 2.0.1?
- 26. ¿Hay alguna forma de convertir mediante programación cadenas de formato VB6 a cadenas de formato .NET?
- 27. formato de cadenas con expresiones regulares en C#
- 28. Comparando el Iterator de cadena con el puntero de Char
- 29. Groovy 2.0.1, GroovyCastException en mi propia clase?
- 30. Formato de salida de Java para cadenas
NSNumericSearch es una opción mucho mejor que hacerlo manualmente. – benzado