Search code examples
iosobjective-cimagensdata

Image Fetching From The Server and Saving to Documents Folder


I am taking the image as NSData and saving it to Documents Folder.

The problem is, when i try to save it Documents Folder, it saves 2 out of 4, or 3 out of 4. It saves randomly.

I could not figure out where the problem is, since after first failure of saving, the second try may be successful for a particular image.

Could you please help me?

 NSData * response = [appDel.serviceHelper serviceCall:@"" withURL:[NSString stringWithFormat:@"%@/Application/GetImage/%@",appDel.appPage.editorServiceURL,ID]];

 NSError *error = nil;
 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
 NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder
 NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"/Images"];


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

    UIImage *image = [[UIImage alloc] initWithData:response];

    NSString *pngFilePath = [NSString stringWithFormat:@"%@/%@",dataPath,[NSString stringWithFormat:@"%@",fileName]];

    NSData *data1;
    if([pngFilePath rangeOfString:@".png"].location !=NSNotFound)
    {
        data1 = [NSData dataWithData:UIImagePNGRepresentation(image)];
        NSLog(@"png Image");

    }
    else if([pngFilePath rangeOfString:@".jpg"].location !=NSNotFound)
    {
        data1 = [NSData dataWithData:UIImageJPEGRepresentation(image,1.0)];
        NSLog(@"jpg Image");

    }
    else
    {
        NSLog(@"another extension Image");

    }


    [data1 writeToFile:pngFilePath atomically:YES];

    //[appDel.fileHelper writeToFile:response withFileName:fileName];
}

Solution

  • try taking the response as NSMutableDictionary instead of NSData. That might show you what the exception is.