2011-07-22 15 views
8

Otrzymałem URL z arkusza savePanel i chciałbym zrobić następujące:bibliotece NSURL dodatek rozszerzenie pliku itd

  • Sprawdzić, czy to ma rozszerzenie
  • jeśli tak, usuń go
  • dodać rozszerzenie niestandardowej
  • jeśli nie, następnie dodać Niestandardowe rozszerzenie

Wszelkie prosty sposób to zrobić .. próbowałem coś następującym bu t nie działa

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

OK ... Możliwym rozwiązaniem następująco

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

że nie można rozwiązać? –

+0

Tak Vince .. dzięki za pomoc. Oba rozwiązania działają ładnie. –

Odpowiedz

7

Można to osiągnąć stosując NSString „s metod. Zauważ, że do porównania ciągów musisz użyć isEqualToString:, a nie ==, który testuje równość wskaźników.

Informacje o używaniu numeru wewnętrznego: -(NSString *)pathExtension;. Aby usunąć rozszerzenie, użyj -(NSString *)stringByDeletingPathExtension;.

We wszystkich przypadkach, aby dodać rozszerzenie, utwórz nowy ciąg znaków, na przykład: +(NSString *)stringWithFormat:.

Więc:

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

Kolejne rozwiązanie od znajomego .... NSString * ścieżka; NSURL * filepath; fileurl = [adres arkusza]; fileurl = [fileurl URLByDeletingPathExtension]; fileurl = [fileurl URLByAppendingPathExtension: @ "yyy"]; ścieżka = [ścieżka pliku]; –

1

Alternatywnym podejściem do operacyjnego rozwiązania podane na tej samej stronie przez @ user756245 ale stosując różne metody: NSString

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

finalString = [finalString stringByAppendingPathExtension:@"yyy"]; 
Powiązane problemy