这是我的应用的工作流程: 用户可以从应用程序的设置页面选择默认打印机,并且每次使用此默认打印机直接打印,无需任何打印预览对话。
我们可以使用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或任何其他方式来保存默认打印机。
答案 0 :(得分:2)
您可以按NSKeyedArchiver
存储自定义对象。为了使其可编码,他们必须实现NSCoding协议。
但您无法在UIPrinter
中存储NSUserDefaults
个实例。经过一些研究,我发现this link。其中说:
您无法在
UIPrinter
中存储NSUserDefaults
个实例。你是什么 可以做的是保存打印机的URL,然后再次启动应用程序 并且您需要UIPrinter
,请阅读NSUserDefaults
中的网址 使用UIPrinter printerWithURL:
。