2016-05-11 4 views
0

このようなUIPrinterオブジェクトを保存しようとしています。UIPrinterを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]; 
    } 

    }]; 

} 

私は[[NSUserDefaults standardUserDefaults] setObject:self.SavedPrinter forKey:@"SavedPrinter"];で保存しようと、私はエラー-[UIPrinter encodeWithCoder:]: unrecognized selector sent to instance 0x7fb204062760としてこのメ​​ッセージを取得するときにクラッシュします。ユーザーが選んだプリンタを覚えておいて、アプリがバックグラウンドを脱しても覚えておく必要がある。誰かがそれが偉大になるのを助けることができたら!

+0

これまでにお尋ねしましたか?とにかく、前の質問のように、この質問をクラッシュについての詳細で更新する必要があります。エラーメッセージとは何ですか? – rmaddy

+0

また、 'NSUserDefaults'のドキュメントの最初のいくつかの段落を読んでください。要件が何であるかがわかります。 'UIPrinter'はこれらの要件を満たしていません。 – rmaddy

+0

@rmaddyはい私は最初の質問をやり直して削除しました。文書を見ましたが、NSUserDefaultsでUIPrintersを保存することはできません。私はなぜ助けを求めているのですか? – Connor

答えて

2

UIPrinterインスタンスをNSUserDefaultsに保存することはできません。あなたができることは、プリンタのURLを保存してから、アプリが再び起動し、UIPrinterが必要な場合は、NSUserDefaultsのURLを読んでUIPrinter printerWithURL:を使用してください。

1

urlプロパティを使用して、に保存する場合は、setURL:forKey:とする必要があります。

このような何か:

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

そして、あなたは再び同じプリンタを必要とするとき、あなたが保存されているURLを使用してprinterWithURL:で別のUIPrinterを作成します。

関連する問題