Как записать строковые данные из почтового индекса в новый почтовый индекс в Swift - PullRequest
2 голосов
/ 05 февраля 2020

Я получаю zip-файл в формате json в виде строки (utf-8). Почтовый индекс содержит несколько PNG. Я хочу использовать эту строку, сделать из нее строку zip-файла и сохранить ее как файл на телефоне.

Однако, когда я пытаюсь преобразовать строку в данные с base64 и записать ее в файл zip, он создаст zip-файл, но вы не сможете его открыть.

Когда я загружаю контейнер моего приложения в xcode (окно -> Устройства и симуляторы -> myApp -> скачать контейнер), он показывает мне файл, но когда я пытаюсь распаковать его вручную, он создаст новый файл с расширением .cpgz. Вы можете увидеть это по ссылке ниже.

вот изображение файлов

Строка Json выглядит следующим образом:

"data:application/x-zip-compressed;base64,$ThisIsAVeryLongCrypticString$"

Я оба пытался вырезать предварительную строку из строки zip: «data: application / x-zip-compress; base64», и просто использовал длинную строку для сохранения данных и сделал то же самое с предварительной Строка (включая длинную строку), но она все равно не будет работать.

Мой код:

            let fm = FileManager()
            guard let uuid = UUID(beCarModel.uuid) else {
                return
            }
            var zipPath = fm.temporaryDirectory
            zipPath.appendPathComponent(uuid.uuidString)
            zipPath.appendPathExtension("zip")

            if fm.fileExists(atPath: zipPath.path) {
                try? fm.removeItem(at: zipPath)
            }

            let newString = json.zip.replacingOccurrences(of: "data:application/x-zip-compressed;base64,", with: "")

            guard (try? newString.data(using: .utf8)?.base64EncodedData().write(to: zipPath)) != nil else {
                return
            }

...