Swift macOS Как реализовать поддержку FTP

Мне нужно загрузить файл на FTP-сервер, проверить, существует ли папка, а если нет, создать ее. Я нашел FileProvider Амира Аббаса Мусавяна. Я все установил и реализовал следующий код:

let credential = URLCredential(user: "user", password: "password", persistence: .permanent)
let ftpProvider = FTPFileProvider(baseURL: URL(string:"cflm.org")!, mode: .active, credential: credential, cache: nil)
ftpProvider?.delegate = self as! FileProviderDelegate
ftpProvider?.contentsOfDirectory(path: "/", completionHandler: {
    contents, error in
    for file in contents {
        print("Name: \(file.name)")
        print("Size: \(file.size)")
        print("Creation Date: \(file.creationDate)")
        print("Modification Date: \(file.modifiedDate)")
    }
})

Когда я запускаю код, завершение Handler для contentsOfDirectory никогда не срабатывает. Кто-нибудь знает, что я делаю неправильно или у меня есть другой способ выполнить нужные мне функции FTP?

1 ответ

Решение

Ваше закрытие не называется, потому что ftpProviderравно нулю, беглый взгляд на исходный код говорит нам, что URL-адрес, отправленный в init, должен содержать протокол. Так что добавьте к своему URL-адресу "ftp" или "ftps".

И оберните init в выражение защиты

guard let ftpProvider = FTPFileProvider(baseURL: URL(string:"ftp://cflm.org")!, mode: .active, credential: credential, cache: nil) else {
    return //or some error handling
} 
//... rest of code
Другие вопросы по тегам