【问题标题】:How to save a default printer in UserDefaults in Swift? [duplicate]如何在 Swift 的 UserDefaults 中保存默认打印机? [复制]
【发布时间】:2018-07-04 16:36:13
【问题描述】:

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

我们可以使用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 或任何其他方式来保存默认打印机。

【问题讨论】:

标签: ios swift swift3 printing userdefaults


【解决方案1】:

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

但是您不能将UIPrinter 实例存储在NSUserDefaults 中。经过一番研究,我发现this link。其中说:

您不能将UIPrinter 实例存储在NSUserDefaults 中。你什么 可以做的是保存打印机的 URL,然后当您的应用程序再次启动时 并且您需要UIPrinter,从NSUserDefaults 读取URL 和 使用UIPrinter printerWithURL:

【讨论】:

  • 那不是要求 UIPrinter 符合 NSCoding 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 2021-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多