2013-12-12 3 views
0

Я пытаюсь сохранить изображения в каталоге документов приложений. Хотя я легко могу сохранить изображения в каталоге, он занимает около двух секунд, чтобы сохранить изображение и его миниатюру. Для сохранения изображений с использованием очереди я использую следующие методы.Быстрый способ сохранения изображений в каталоге документов в iOS

+ (void)saveImage:(UIImage*)imageToSave withName:(NSString*)imageName toFolder:(NSString*)folderName 
{ 
    [Utils createFolderWithPath:folderName]; 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@/%@.png",folderName,imageName]]; 
    NSData *imageData = UIImagePNGRepresentation(imageToSave); 
    [imageData writeToFile:savedImagePath atomically:NO]; 
} 
+ (void)createFolderWithPath:(NSString *)folderPath 
{ 
    NSError *error = nil; 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *filePath = [documentsDirectory stringByAppendingPathComponent:folderPath]; 

    if (![[NSFileManager defaultManager] fileExistsAtPath:filePath]) 
    { 
     [[NSFileManager defaultManager] createDirectoryAtPath:filePath withIntermediateDirectories:NO attributes:nil error:&error]; 
    } 
} 

есть ли более быстрый способ? Так как мне нужно сохранить несколько изображений, а 2 секунды на изображение - это много времени!

+2

Вы можете сохранять изображения в фоновом потоке и оставлять основной поток для другого процесса. Также вы можете оптимизировать свой код путем вычисления каталога документов один раз и использовать его в будущем. – Midhere

+0

Сделал это, но все-таки нашел время, чтобы сохранить изображения. Сохраняли строку каталога документов в userdefaults один раз и использовали ее полностью. Любые другие идеи? –

+0

@SahilTyagi Вы пропустили основную идею, которую он вам дал. Используйте фоновые потоки и блоки для записи изображений. Между тем покажите пользователю счетчик. – NSNoob

ответ

0

Вам не нужно искать каталог документов каждый раз. Просто найдите его один раз и сохраните. и запустите свой код в потоке, поток сохранит изображение в фоновом режиме.

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