2011-03-14 6 views
20

J'ai un NSURL, un chemin de fichier, et je veux ajouter un NSString à la fin de celui-ci (le nom de fichier) comment puis-je faire cela? Mais après cela, je ne veux pas que tout soit un NSURL.Ajouter NSString à NSURL?

Merci.

Répondre

6

Je pense qu'il est aussi simple que:

NSString *s = [aUrl.path stringByAppendingString:@"newString"]; 
+2

Si vous utilisez ce, pour obtenir une NSURL à la fin, vous devez faire ceci: '[NSURL URLWithString: [aUrl.path stringByAppendingString: @ "nouvelleChaine"]]' – Myxtic

96

Je pense qu'il est bonne solution:

NSURL *bUrl = [aUrl URLByAppendingPathComponent:@"newString"]; 

Dans Swift, vous pouvez faire ce qui suit,

var bURL = aURL.URLByAppendingPathComponent("newString") 

Vous pouvez également état si l'URL est un répertoire,

var bURL = aURL.URLByAppendingPathComponent("newString", isDirectory: true) 
+6

Notez que cela ne l'encodage URL de la chaîne de composant de chemin – amleszk

+1

Cette solution est la bonne. –

+2

Cela ajoute également une barre oblique avant la chaîne. –

2

Si vous avez un NSURL de fichier dans un répertoire et que vous voulez retrouver avec un NSString contenant le chemin du NSURL avec un nom de fichier joint à, utilisez ceci:

NSURL *url = [NSURL fileURLWithPath:@"/System" isDirectory:YES]; 
NSString *filename = @"foo"; 
NSString *result = [url.path stringByAppendingPathComponent:filename]; 

Vous pouvez également utiliser URLByAppendingPathComponent mais Cela ajoute une étape supplémentaire qui crée un objet NSURL supplémentaire qui n'est pas nécessaire.

NSURL *url = [NSURL fileURLWithPath:@"/System" isDirectory:YES]; 
NSString *filename = @"foo"; 
NSURL *newURL = [url URLByAppendingPathComponent:filename]; 
NSString *result = newURL.path;