2014-12-03 147 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