Удалить последнюю часть NSURL: iOS

Я пытаюсь удалить только последнюю часть URL-адреса, его URL-адрес FTP.

Предположим, у меня есть URL как: > ftp://ftp.abc.com/public_html/somefolder/. После удаления последней части я должен иметь ее как: ftp://ftp.abc.com/public_html/.

Я пробовал использовать stringByDeletingLastPathComponenet и URLByDeletingLastPathComponent, но они не удаляют последнюю часть правильно. Они меняют весь внешний вид URL-адреса.

например, после использования вышеуказанных методов, вот формат URL, который я получаю ftp:/ftp.abc.com/public_html/. Он удаляет один "/" в "ftp://", что приводит к сбою моей программы.

Как можно удалить только последнюю часть, не нарушая остальную часть URL?

UPDATE:

NSURL * stringUrl = [NSURL URLWithString:string];
NSURL * urlByRemovingLastComponent = [stringUrl URLByDeletingLastPathComponent];
NSLog(@"%@", urlByRemovingLastComponent);

Используя вышеприведенный код, я получаю вывод как: - ftp:/ftp.abc.com/public_html/

Ответ 1

Теперь попробуйте

    NSString* filePath = @"ftp://ftp.abc.com/public_html/somefolder/.";

    NSArray* pathComponents = [filePath pathComponents];
    NSLog(@"\n\npath=%@",pathComponents);
    if ([pathComponents count] > 2) {
            NSArray* lastTwoArray = [pathComponents subarrayWithRange:NSMakeRange([pathComponents count]-2,2)];
            NSString* lastTwoPath = [NSString pathWithComponents:lastTwoArray];
             NSLog(@"\n\nlastTwoArray=%@",lastTwoPath);

            NSArray *listItems = [filePath componentsSeparatedByString:lastTwoPath];
            NSLog(@"\n\nlist item 0=%@",[listItems objectAtIndex:0]);

     }


output

path=(
      "ftp:",
      "ftp.abc.com",
      "public_html",
      somefolder,
      "."
      )

lastTwoArray =somefolder/.

list item 0 =ftp://ftp.abc.com/public_html/

Ответ 2

Хм. URLByDeletingLastPathComponent отлично работает с учетом указанного выше ввода.

NSURL *url = [NSURL URLWithString:@"ftp://ftp.abc.com/public_html/somefolder/"];
NSLog(@"%@", [url URLByDeletingLastPathComponent]);

возвращает

ftp://ftp.abc.com/public_html/

У вас есть пример кода, который дает неправильные результаты?

Max

Ответ 3

Пример того, как извлечь последнюю часть NSURL. В этом случае местоположение файла. Данные ядра Sqlite

NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"CoreAPI.sqlite"];

NSString *localPath = [storeURL absoluteString];

NSArray* pathComponents = [localPath pathComponents];

NSLog(@"%@",[pathComponents objectAtIndex:6]);

NSString * nombre = [NSString stringWithFormat:@"%@", [pathComponents objectAtIndex:6]];

Этот код возвращает мне имя файла CoreAPI.sqlite