如何在 Swift 的 UserDefaults 中保存默认打印机?
How to save a default printer in UserDefaults in Swift?
这是我的应用程序的工作流程:
用户可以从应用程序的设置页面 select 默认打印机,并且每次都会使用此默认打印机直接打印 而无需任何打印预览对话框 .
我们可以 select 打印机使用 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中,UserDefaults不支持类型
是否有任何其他选项可以将 UIPrinter
保存到 UserDefaults 或任何其他方式来保存默认打印机。
您可以按 NSKeyedArchiver
存储自定义对象。为了使其可编码,他们必须实现 NSCoding 协议。
但是您不能在 NSUserDefaults
中存储 UIPrinter
实例。经过一些研究,我发现 。其中说:
You can't store a UIPrinter
instance in NSUserDefaults
. What you
can do is save the printer's URL and then when your app starts again
and you need the UIPrinter
, read the URL from NSUserDefaults
and
use UIPrinter printerWithURL:
.
这是我的应用程序的工作流程: 用户可以从应用程序的设置页面 select 默认打印机,并且每次都会使用此默认打印机直接打印 而无需任何打印预览对话框 .
我们可以 select 打印机使用 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中,UserDefaults不支持类型
是否有任何其他选项可以将 UIPrinter
保存到 UserDefaults 或任何其他方式来保存默认打印机。
您可以按 NSKeyedArchiver
存储自定义对象。为了使其可编码,他们必须实现 NSCoding 协议。
但是您不能在 NSUserDefaults
中存储 UIPrinter
实例。经过一些研究,我发现
You can't store a
UIPrinter
instance inNSUserDefaults
. What you can do is save the printer's URL and then when your app starts again and you need theUIPrinter
, read the URL fromNSUserDefaults
and useUIPrinter printerWithURL:
.