2011-07-22 4 views
8

J'ai reçu une URL de la feuille savePanel et je voudrais faire ce qui suit:extension de fichier NSURL plus etc

  • Vérifiez pour voir si elle a une extension
  • si elle le fait, retirez-le
  • ajouter une extension personnalisée
  • si elle n'a pas, puis ajoutez une extension personnalisée

de toute façon simple de faire cela .. J'ai essayé quelque chose comme suit bu t il ne fonctionne pas

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

OK ... Une solution possible comme suit

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

avez-vous résolu cela? –

+0

Oui Vince .. merci pour votre aide. Les deux solutions fonctionnent bien. –

Répondre

7

Ceci peut être réalisé en utilisant des méthodes de NSString. Notez que pour la comparaison de chaînes, vous devez utiliser isEqualToString:, et non ==, qui teste l'égalité des pointeurs.

À propos de l'utilisation de l'extension: -(NSString *)pathExtension;. Pour supprimer l'extension, utilisez -(NSString *)stringByDeletingPathExtension;.

Dans tous les cas, pour ajouter une extension, composez une nouvelle chaîne en utilisant par exemple: +(NSString *)stringWithFormat:.

Alors:

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

Une autre solution d'un ami .... NSString * chemin; NSURL * filepath; fileurl = [URL de la feuille]; fileurl = [fileurl URLByDeletingPathExtension]; fileurl = [fileurl URLByAppendingPathExtension: @ "yyy"]; path = [chemin fileurl]; –

1

Une approche alternative à la solution viable donnée sur cette même page par @ user756245 mais en utilisant différentes méthodes: NSString

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

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