Удалить последнюю часть 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