Как преобразовать Данные, полученные из URL-адреса ftp, в пригодные для использования объекты в Swift - PullRequest
0 голосов
/ 05 апреля 2019

Я пытаюсь проанализировать ряд различных файлов, извлеченных из каталога ftp: ftp: //ftp.bom.gov.au/anon/gen/radar/

Типы файлов: .png, .gif, .shtml, .html и .json.

У меня есть сырые Data с:

let url = URL(string: "ftp://ftp.bom.gov.au/anon/gen/radar/")
    var data: Data? = nil
    if let anUrl = url {
        do {
            try data = Data(contentsOf: anUrl)

        }
        catch {
        }
    }

но я не могу понять, как разбить данные на отдельные объекты.

Я вижу, что они там, используя:

if let actualData = NSString(data: data!, encoding: String.Encoding.utf8.rawValue) {
                print(actualData)
            }

который выводит на консоль:

-rw-rw-r--    1 1050     1502         5842 Apr 05 00:14 IDR784.T.201904050012.png

-rw-rw-r--    1 1050     1502         5774 Apr 05 00:20 IDR784.T.201904050018.png

-rw-rw-r--    1 1050     1502        19176 Apr 05 00:20 IDR784.gif

-rw-rw-r--    1 1050     1502        17796 Apr 04 23:01 IDR78I.T.201904042301.png

для файлов 5000+ (приблизительно 30 МБ), содержащихся в Data.

Я искал повсюду, где только можно подумать, включая Руководство по программированию CFNetwork компании Apple - Работа с FTP-серверами, но не могу понять, что из этого вышло.

Любое руководство будет высоко ценится.

1 Ответ

0 голосов
/ 05 апреля 2019

Как уже упоминалось, вы должны использовать URLSession для загрузки данных вместо данных (contentsOf :).Если вы продолжите свой текущий путь, вы, вероятно, захотите настроить NSRegularExpression для анализа данных.Сначала разбейте большую строку на массив строк, используя .components(separatedBy: .newlines).Затем используйте регулярное выражение для сопоставления имен файлов, которые вы ищете.

Вместо того, чтобы делать необработанные запросы, вам может оказаться проще использовать библиотеку FTP.Быстрый поиск приземлился в этой потенциальной опции:

https://github.com/Constantine-Fry/rebekka

...