将 UIPrinter 保存到 NSUserDefaults
Posted
技术标签:
【中文标题】将 UIPrinter 保存到 NSUserDefaults【英文标题】:Saving UIPrinter to NSUserDefaults 【发布时间】:2016-05-11 22:50:43 【问题描述】:我正在尝试像这样保存 UIPrinter 对象。
-(IBAction)setPrinterInSettings:(id)sender
UIPrinterPickerController *picker = [UIPrinterPickerController printerPickerControllerWithInitiallySelectedPrinter:self.SavedPrinter];
[picker presentFromRect:self.settingsButton.frame inView:self.view animated:YES completionHandler:^(UIPrinterPickerController *controller, BOOL userDidSelect, NSError *err)
if (userDidSelect)
self.SavedPrinter = controller.selectedPrinter;
NSLog(@"self.SavedPrinter == %@",self.SavedPrinter);
[self saveCustomObject:self.SavedPrinter key:@"SavedPrinter"];
[[NSUserDefaults standardUserDefaults] setObject:self.SavedPrinter forKey:@"SavedPrinter"];
[[NSUserDefaults standardUserDefaults] synchronize];
];
当我尝试保存在[[NSUserDefaults standardUserDefaults] setObject:self.SavedPrinter forKey:@"SavedPrinter"];
时它崩溃了,我收到此消息作为错误-[UIPrinter encodeWithCoder:]: unrecognized selector sent to instance 0x7fb204062760
。我需要它来记住用户选择的打印机并记住它,即使应用程序退出后台也是如此。如果有人可以提供帮助,那就太好了!
【问题讨论】:
你之前问过这个吗?无论如何,就像在上一个问题中一样,您需要使用有关崩溃的详细信息来更新此问题。错误信息是什么? 另外,请阅读NSUserDefaults
文档的前几段。它告诉你有什么要求。 UIPrinter
不符合这些要求。
@rmaddy 是的,我确实重做并删除了我的第一个问题,并且我确实查看了文档,我知道您无法使用 NSUserDefaults 保存 UIPrinters。这就是我寻求帮助的原因
【参考方案1】:
您不能将UIPrinter
实例存储在NSUserDefaults
中。您可以做的是保存打印机的 URL,然后当您的应用再次启动并且您需要 UIPrinter
时,从 NSUserDefaults
读取 URL 并使用 UIPrinter printerWithURL:
。
【讨论】:
【参考方案2】:您应该使用url
属性将NSUserDefaults
与setURL:forKey:
一起保存。
类似这样的:
NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
[defaults setURL:[self.SavedPrinter url] forKey:@"printer.url"];
[defaults synchronize];
当您再次需要同一台打印机时,使用您存储的 url 创建另一个 UIPrinter
和 printerWithURL:
。
【讨论】:
以上是关于将 UIPrinter 保存到 NSUserDefaults的主要内容,如果未能解决你的问题,请参考以下文章