2011-07-22 7 views
8

He recibido una dirección URL de la hoja de savePanel y me gustaría hacer lo siguiente:NSURL Además extensión de archivo, etc

  • Compruebe para ver si tiene una extensión
  • si lo hace, y eliminar
  • agregar una extensión personalizada
  • si no lo hace, a continuación, añadir una extensión personalizada

Cualquier forma sencilla de hacer esto .. he intentado algo así como después de bu t no funciona

if ([tmp pathExtension] != @"xxx") 
    path = [tmp stringByAppendingFormat:@"xxx"]; 

bien ... Una posible solución de la siguiente manera

NSString *path; 
NSURL *filepath; 
fileurl = [sheet URL]; 
fileurl = [fileurl URLByDeletingPathExtension]; 
fileurl = [fileurl URLByAppendingPathExtension:@"yyy"]; 
path = [fileurl path]; 
+0

los solucionaron eso? –

+0

Sí Vince ... gracias por su ayuda. Ambas soluciones funcionan bien. –

Respuesta

7

Esto se puede lograr usando NSString 's métodos. Tenga en cuenta que para la comparación de cadenas, debe usar isEqualToString:, no ==, que prueba la igualdad de punteros.

Sobre la extensión use: -(NSString *)pathExtension;. Para eliminar la extensión, use -(NSString *)stringByDeletingPathExtension;.

En todos los casos, para agregar una extensión, componga una nueva cadena utilizando, por ejemplo: +(NSString *)stringWithFormat:.

Así:

NSString *finalString; 
if([[tmp pathExtension] isEqualToString:@"xxx"]) { 
    finalString = [tmp stringByDeletingPathExtension]; 
} 
finalString = [NSString stringWithFormat:@"%@.yyy", finalString]; 
+1

Otra solución de un amigo .... NSString * path; NSURL * filepath; fileurl = [hoja de URL]; fileurl = [fileurl URLByDeletingPathExtension]; fileurl = [fileurl URLByAppendingPathExtension: @ "yyy"]; path = [ruta del archivo]; –

1

Un enfoque alternativo a la solución viable dada en esta misma página por @ user756245 pero utilizando diferentes métodos: NSString

NSString *finalString; 
if([[tmp pathExtension] isEqualToString:@"xxx"]) { 
    finalString = [tmp stringByDeletingPathExtension]; 
} 

finalString = [finalString stringByAppendingPathExtension:@"yyy"];