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

ana*_*s.p 5 printing ios swift swift3 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
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

Arn*_*nab 3

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

但你不能将UIPrinter实例存储在NSUserDefaults. 经过一番研究,我发现了这个链接。其中说:

您无法将UIPrinter实例存储在NSUserDefaults. 您可以做的是保存打印机的 URL,然后当您的应用程序再次启动并且您需要 时UIPrinter,从 读取 URLNSUserDefaults并使用UIPrinter printerWithURL:.