Должен ли этот метод принимать путь в качестве аргумента?
Похоже, что в качестве пути ему нужно имя файла:
Например, /home/file.txt - это файл, а / home / - это путь. Этот метод выглядит так, как будто он принимает первый в качестве аргумента.
Ваше различие между «путем» и «файлом» не является обычным явлением в Unix. Является ли последний элемент пути файлом или нет, это не влияет на тот факт, что это путь. «/home/file.txt» выглядит как абсолютный путь к файлу (хотя на самом деле это может быть обманчиво названный каталог). "/ home /" - это абсолютный путь к каталогу. Оба пути. (Так же как и «foo / bar» - вы бы назвали это «файлом» или «путем» в вашей терминологии? Без проверки объекта по этому пути мы не можем знать, называет ли он каталог или файл.) использует термин в его обычном смысле.
Если вы хотите найти различия между файлами и папками, см. -fileExistsAtPath: isDirectory: .
Использование:
BOOL isDirectory; if ([self fileExistsAtPath:@"/Users/me/Subfolder" isDirectory:&isDirectory] && isDirectory) { // Exists and is a directory. Isn't that neat? }
Да, требуется строка, которая является путем - см. Документацию :
Параметры путь Путь к файлу или каталогу.Если путь начинается с тильды (~), его сначала нужно расширить с помощью stringByExpandingTildeInPath, или этот метод возвращает NO.
~
stringByExpandingTildeInPath
NO
Обратите внимание, что /home/file.txt - это путь, так же, как /home/.Однако первый не является каталогом , а последний -
/home/file.txt
/home/