Замораживание видео в 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)
}
}