2016-05-11 11 views
0

Ich versuche, ein UIPrinter-Objekt wie folgt zu speichern.Speichern UIPrinter zu NSUserDefaults

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

    }]; 

} 

Es stürzt ab, wenn ich bei [[NSUserDefaults standardUserDefaults] setObject:self.SavedPrinter forKey:@"SavedPrinter"]; zu retten versuchen, und ich bekomme diese Meldung als Fehler -[UIPrinter encodeWithCoder:]: unrecognized selector sent to instance 0x7fb204062760. Ich brauche es, um mich daran zu erinnern, welchen Drucker der Benutzer ausgewählt hat, und sich daran zu erinnern, auch wenn die App den Hintergrund verlässt. Wenn jemand helfen könnte, wäre das großartig!

+0

Haben Sie das früher gefragt? Wie in der vorherigen Frage müssen Sie diese Frage mit Details zum Absturz aktualisieren. Was ist die Fehlermeldung? – rmaddy

+0

Lesen Sie auch die ersten Abschnitte der Dokumentation zu 'NSUserDefaults'. Es sagt Ihnen, was die Anforderungen sind. 'UIPrinter' erfüllt diese Anforderungen nicht. – rmaddy

+0

@rmaddy Ja, ich habe meine erste Frage erneut gemacht und gelöscht, und ich habe mir die Dokumentation angeschaut und ich weiß, dass Sie UIPrinters nicht mit den NSUserDefaults speichern können. Deshalb bitte ich um Hilfe – Connor

Antwort

2

Sie können keine UIPrinter Instanz in NSUserDefaults speichern. Sie können die URL des Druckers speichern und dann, wenn Ihre App erneut gestartet wird und Sie die UIPrinter benötigen, die URL von NSUserDefaults lesen und UIPrinter printerWithURL: verwenden.

1

Sie sollten die url-Eigenschaft verwenden, um in NSUserDefaults mit setURL:forKey: zu speichern.

Etwas wie folgt aus:

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

Und wenn Sie den gleichen Drucker wieder benötigen, erstellen Sie ein anderes UIPrinter mit printerWithURL: mit der URL, die Sie gespeichert haben.