Замораживание видео в iphone 6 swift 4.2

Я записал видео на 5 секунд, и оно должно быть в зашифрованном виде в локальном хранилище приложения. Так что я использую каркас RNEncryptor для шифрования видео. Но иногда, когда я нажимаю кнопку "Использовать видео", приложение останавливается. проверьте мой код ниже для шифрования.

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
    DispatchQueue.main.async(execute: {
        let encryptData = try? RNCryptor.encrypt(data: data!, withPassword: "ABC123")
        do {
            try encryptData?.write(to: url!, options:.withoutOverwriting)
            self.encryptVideoData = encryptData as! NSData
            UserDefaults.standard.set(self.encryptVideoData, forKey: "passportVidKey")
        } catch { // handle error
            print(error)
        }
    })
}

1 ответ

Решение

Вы должны выполнять это действие внутри фоновой очереди вместо основной очереди. И не используйте принудительную распаковку для опций, вместо этого безопасно распакуйте с guard или же if let, заявления. Ниже пример может помочь,

DispatchQueue.global(qos: .background).async {
    guard
        let data = data,
        let url = url,
        let encryptData = try? RNCryptor.encrypt(data: data, withPassword: "ABC123")
        else { return }
    do {
        try encryptData?.write(to: url, options:.withoutOverwriting)
        self.encryptVideoData = encryptData as! NSData
        UserDefaults.standard.set(self.encryptVideoData, forKey: "passportVidKey")
    } catch { // handle error
        print(error)
    }
}
Другие вопросы по тегам