2014-12-03 71 views
-2

我的Xcode iOS應用程序中有一個名爲PhotoSet的文件夾。我想將UIImage轉換爲jpg並將其放入文件夾中。以下是我迄今爲止(順便說一下,如果是在所有相關的UIImage的是從照片,用戶需要採取):iPhone - 將UIImage添加到文件夾

NSData * imageData = UIImageJPEGRepresentation(chosenImage, 1.0); 
if (imageData != nil) { 
    [imageData writeToFile:@"/Users/Toly/Desktop/PhotoMap/PhotoMap/PhotoSet/test.jpg" atomically:YES]; 
} 

我沒有得到任何錯誤或警告。但是,沒有圖片被保存到任何文件夾。我該怎麼辦?

+0

你認爲你的iPhone有這樣的目錄結構(提示:事實並非如此)?你檢查了對'writeToFile:'調用的返回值嗎?您需要在應用的沙箱中寫入有效的路徑。做一些搜索。這已經在這裏多次報道。 – rmaddy 2014-12-03 23:41:02

+0

模擬器實際上應該將圖像保存到桌面。 – Andy 2014-12-04 02:00:20

回答

1

您需要寫入實際在iPhone上的目錄。大多數情況下,您需要寫入文檔目錄。你可以得到它的路徑是這樣的:

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

這給你基本的文件目錄,如果你要的文件夾放在你需要你去做這樣之前創建該文件夾的子目錄。

NSString *folderPath = [documentsDirectory stringByAddingPathComponent:@"myFolder/images"]; 
NSError *error = nil; 
NSFileManager *fm = [[NSFileManager alloc] init] 
[fm createDirectoryAtPath:folderPath withIntermediateDirectories:YES attributes:nil error:&error]; 

然後到你的圖像數據保存到該文件夾​​,你會做這樣的事情

NSString *imageDataPath = [folderPath stringByAppendingPathComponent:@"myImage"]; 
BOOL success = [imageData writeToFile:imageDataPath]; 

此外,您還可以將的NSLog它imageDataPath會給你該文件被保存,以便確切位置如果您使用的是iOS模擬器,則可以導航到finder中的實際文件。

0

您的手機不包含的文件鏡像「/Users/Toly/Desktop/PhotoMap/PhotoMap/PhotoSet/test.jpg」

的數據結構,如果你想要的形象在內存中存在,請嘗試NSUserDefaults的使用,或xcassets或Coredata。如果你是絕對意向上寫入文件,看看下面的NSCoding和的NSFileManager教程:

http://www.raywenderlich.com/1914/nscoding-tutorial-for-ios-how-to-save-your-app-data

+2

請勿使用'NSUserDefaults'來保留圖像。將它寫入文件。 – rmaddy 2014-12-03 23:53:09

相關問題