Saving UIPrinter for NSUserDefaults

I am trying to save a UIPrinter object like this.

-(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];
    }

  }];

}

An attempt to save to failed [[NSUserDefaults standardUserDefaults] setObject:self.SavedPrinter forKey:@"SavedPrinter"];, and I get this message as an error -[UIPrinter encodeWithCoder:]: unrecognized selector sent to instance 0x7fb204062760. I need him to remember which printer the user selected and remember him even when the application goes beyond the background. If anyone could help, that would be great!

0
source share
2 answers

You cannot save the instance UIPrinterto NSUserDefaults. What you can do is save the URL of the printer, and then when your application starts up again and you need to UIPrinter, read the URL from NSUserDefaultsand use UIPrinter printerWithURL:.

+2
source

url NSUserDefaults setURL:forKey:.

- :

NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];     
[defaults setURL:[self.SavedPrinter url] forKey:@"printer.url"];
[defaults synchronize];

, UIPrinter printerWithURL: URL-, .

+1

Source: https://habr.com/ru/post/1692705/


All Articles