Версия Swift 4.x
let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String
let url = NSURL(fileURLWithPath: path)
if let pathComponent = url.appendingPathComponent("nameOfFileHere") {
let filePath = pathComponent.path
let fileManager = FileManager.default
if fileManager.fileExists(atPath: filePath) {
print("FILE AVAILABLE")
} else {
print("FILE NOT AVAILABLE")
}
} else {
print("FILE PATH NOT AVAILABLE")
}
Версия Swift 3.x
let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String
let url = URL(fileURLWithPath: path)
let filePath = url.appendingPathComponent("nameOfFileHere").path
let fileManager = FileManager.default
if fileManager.fileExists(atPath: filePath) {
print("FILE AVAILABLE")
} else {
print("FILE NOT AVAILABLE")
}
Версия Swift 2.x , необходимо использовать URLByAppendingPathComponent
let path = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
let url = NSURL(fileURLWithPath: path)
let filePath = url.URLByAppendingPathComponent("nameOfFileHere").path!
let fileManager = NSFileManager.defaultManager()
if fileManager.fileExistsAtPath(filePath) {
print("FILE AVAILABLE")
} else {
print("FILE NOT AVAILABLE")
}
Проверьте приведенный ниже код:
Swift 1.2
Swift 2.0
источник
var paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString
absoluteString
для преобразованияNSURL
в,path
но было бы лучше просто сохранить путь в виде строки (NSString
), как в Swift 1.2.В настоящее время (2016 г.) Apple все больше и больше рекомендует использовать API, связанные с URL
NSURL
,NSFileManager
и т. Д.Чтобы получить каталог документов в iOS и Swift 2, используйте
В
try!
этом случае это безопасно, потому что этот стандартный каталог гарантированно существует.Затем добавьте соответствующий компонент пути, например
sqlite
файлТеперь проверьте, существует ли файл с
checkResourceIsReachableAndReturnError
офNSURL
.Если вам нужна ошибка, передайте
NSError
указатель на параметр.Swift 3+:
checkResourceIsReachable
помечено как можно броситьЧтобы учитывать только логическое возвращаемое значение и игнорировать ошибку, используйте оператор nil-coalescing
источник
checkResourceIsReachable()
и просто возвращаетсяBool
дляURL
типа.try - catch
не создает исключений. Это не сравнимо с исключениями в Objective-C. Это эффективная система обработки ошибок.Это довольно удобно. Просто работайте с синглтоном NSFileManager defaultManager, а затем используйте
fileExistsAtPath()
метод, который просто принимает строку в качестве аргумента и возвращает Bool, позволяя разместить его непосредственно в операторе if.Обратите внимание, что преобразование в String не требуется в Swift 2.
источник
Альтернативный / рекомендуемый шаблон кода в Swift 3 :
Использование обработки исключений
источник
Swift 4.2
С помощью: -
источник
Для новичков в Swift 3 :
Вот пример кода, чтобы проверить, существует ли файл с именем «database.sqlite» в каталоге документов приложения:
источник
Очень просто: если ваш путь является экземпляром URL-адреса, преобразовать его в строку методом 'path'.
источник
Это отлично работает для меня в swift4:
Вы можете проверить с помощью этого звонка:
Надеюсь, это кому-то пригодится. @; -]
источник
Вы должны добавить косую черту "/" перед именем файла, иначе вы получите путь как "... / DocumentsFilename.jpg"
источник
Пример Swift 4 :
Я поставил проверку в свою функцию loadData, которую я вызвал в viewDidLoad.
Затем я определил loadData ниже.
источник
работает на Swift 5
где
"userInfo"
- имя файла, а"sqlite3"
- расширение файлаисточник