2012-05-04 16 views
0

私はユーザーがカメラロールから選んだ単一の画像を持っています。ユーザーがUIイメージビューから画像を保存して読み込む機能を持つようにします。私は、アプリケーションが実行を停止するか、デバイスが再起動されるまで、瞬時にシングルトンクラスに保存された画像を持っています。NSStringを使用してイメージを保存/ロードできますか?

私は保存用に使用したコードと同様の画像をテキスト文字列で使用できますか?私はちょうど.imageないが、当然、そのような運するの.text変更しようとしてい

- (IBAction)functionsave:(id)sender { 
NSString *savecontents = _function.text; 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setObject:savecontents forKey:@"savecontents1"]; 
[defaults synchronize]; 


- (IBAction)Functionload:(id)sender { 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSString *loadstring = [defaults objectForKey:@"savecontents1"]; 
[_function setText:loadstring]; 

答えて

1

のNSStringオブジェクトが文字列ではなく、イメージを保持するのに適している(それが届くのビットがありました)。あなたが後で使用するために画像を保存したい場合は、私はあなたのアプリケーションのサンドボックス(つまり、ドキュメントフォルダ)にPNGとして、それらの画像を保存することをお勧めいたします:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 

あなたが使用して画像を保存することができます

UIImage *myImage = ... 
NSData *data = UIImagePNGRepresentation(myImage); 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *appDocsDirectory = [paths objectAtIndex:0]; 
[data writeToFile:[NSString stringWithFormat:@"%@/%@.png", appDocsDirectory , @"myNewFile"] atomically:YES]; 

あなたは

UIImage* thumImage = [UIImage imageWithContentsOfFile:[[NSString stringWithFormat:@"%@/%@.png", appDocsDirectory , @"myNewFile"]]; 

実際のファイルを使用すると、NSUserDefaultsよりもメモリ消費量が少なくなると思います。一度に1つのファイルをメモリからロード/アンロードできます。

+0

非常に基本的な質問であれば、ご迷惑をおかけして申し訳ありませんが... IBActionの下にある保存ボタンと読み込みボタンのための保存とリトライコードはおそらくありますか?コードの一番上の部分は、ファイルの.hのものです。クラスで、イメージを保存してロードしますか?私はそれを "expected"; "declaration listの終わり"に置くとエラーが発生し続けます。ありがとう – JSA986

+0

またはAppDelegateファイルはアプリドキュメントディレクトリにありますか?あなたはおそらく、プログラミングにあまり経験がありませんでした。 – JSA986

+0

一番上のコードは、アプリケーションのドキュメントディレクトリへのパスを使ってdocumentsDirectoryオブジェクトを埋め込むために必要な実装コードです。 2番目のコードはIBActionの下にある保存ボタンに移動します(UIImageを "..."に置き換えてください)。 3番目の例はロード用です。 重要なお知らせ: このコードは単なる例であり、画像が見つからない場合や、存在しない場合や、writeToFileが失敗した場合などのNSErrorsをカバーすることを忘れないでください。 – Neo

関連する問題