2014-12-03 3 views
-2

У меня есть папка под названием PhotoSet в приложении Xcode iOS. Я хочу преобразовать 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

+0

Симулятор должен фактически сохранять изображение на рабочий стол. – Andy

ответ

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 это даст вам точное место, что файл сохранен так вы можете перейти к фактическому файлу в finder, если вы используете симулятор iOS.

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

Смежные вопросы