2012-05-04 78 views
0

我有一個用戶從相機膠捲中選取的圖像。像用戶一樣,可以讓設施從UI圖像視圖保存並加載圖像。我現在在單身人員課程中保存了圖像,直到應用程序停止運行或設備重新啓動。我可以使用NSString保存/加載圖像嗎?

我可以使用類似於我用於存儲文本字符串的代碼的圖像嗎?我曾嘗試只是改變到的.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的有:

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

我想用真實的文件是爲內存消耗比更好NSUserDefaults的。由於您可以一次加載/卸載內存中的一個文件。

+0

感謝您對此提供指導,聽起來不錯,對不起,如果這是一個非常基本的問題...保存和恢復代碼大概是我的保存和加載按鈕在IBAction下?代碼的頂部,是在文件的.h中在我想保存並加載圖像的類中?當我把它放在「預計」,「在聲明列表末尾」時,我總是收到錯誤。感謝 – JSA986

+0

或者它是AppDelegate文件在應用程序文檔目錄中我可能會這麼做?正如你可能猜到我在編程方面經驗不足。 – JSA986

+0

代碼的最上面是您需要用您的應用程序文檔目錄的路徑填充文檔目錄對象的實現代碼。 第二段代碼應該在IBAction下的保存按鈕(記得在「...」處替換你的UIImage)。 第三個例子是加載。 重要注意事項: 這段代碼只是一個例子,請記住包括圖片未找到/不存在的情況以及NSErrors if writeToFile失敗等。 – Neo

相關問題