如何在Swift中的UserDefaults中保存默认打印机?

时间:2018-01-25 12:18:06

标签: ios swift swift3 printing userdefaults

这是我的应用的工作流程: 用户可以从应用程序的设置页面选择默认打印机,并且每次使用此默认打印机直接打印,无需任何打印预览对话

我们可以使用UIPrinterPickerController选择打印机:

let printerPicker = UIPrinterPickerController(initiallySelectedPrinter: nil)
printerPicker.present(from: CGRect(x: 0, y: 0, width: 600, height: 500), in: self, animated: true) { (printerPicker, userDidSelect, error) in
    if userDidSelect {
        //Here get the selected UIPrinter
        let defaultPrinter = printerPicker.selectedPrinter
    }
}

获取UIPrinter后,我们无法将UIPrinter对象直接保存到UserDefaults,这不是UserDefault支持类型。

是否有其他选项可以将UIPrinter保存到UserDefaults或任何其他方式来保存默认打印机。

1 个答案:

答案 0 :(得分:2)

您可以按NSKeyedArchiver存储自定义对象。为了使其可编码,他们必须实现NSCoding协议。

但您无法在UIPrinter中存储NSUserDefaults个实例。经过一些研究,我发现this link。其中说:

  

您无法在UIPrinter中存储NSUserDefaults个实例。你是什​​么   可以做的是保存打印机的URL,然后再次启动应用程序   并且您需要UIPrinter,请阅读NSUserDefaults中的网址   使用UIPrinter printerWithURL: