Question

i'm trying to save a NsData file into a directory. that is the code of my method:

- (void)cacheImage:(NSData *)imageData withTitle:(NSString *)title
{

    NSURL *cacheURL = (NSURL *)[[self.fileMenager URLsForDirectory:NSCachesDirectory inDomains:NSUserDomainMask] objectAtIndex:0]; //we take the URL of the cache Directory and comvert the url of the cache directory into a string
    NSURL *imageFolder = [cacheURL URLByAppendingPathComponent:PHOTO_CACHE_FOLDER];

    if ([self.fileMenager isWritableFileAtPath:[cacheURL path]]) { //check if the cache directory is writable
        if (![self.fileMenager createDirectoryAtURL:cacheURL withIntermediateDirectories:NO attributes:nil error:nil]) { //check if the directory of our image is already exist
            NSURL * fileToWrite = [[imageFolder URLByAppendingPathComponent:title isDirectory:NO] URLByAppendingPathExtension:@"jpg"]; //take the complete url of image
            if ([imageData writeToURL:fileToWrite atomically:YES]) //atomically = safe write
            {
                NSArray *debug = [self.fileMenager contentsOfDirectoryAtPath:[imageFolder path] error:nil];
                for (NSURL *url in debug)
                    NSLog(@"url prooooo : %@",url);
            }
        }
    }
}

that is an example of url (fileToWrite) where i try to write:

file://localhost/Users/MarcoMignano/Library/Application%20Support/iPhone%20Simulator/6.1/Applications/93B0A0AC-EC13-4050-88CA-F46FBA11001E/Library/Caches/image_cache/Mozart%201.jpg

the point is simple, the method writeToURL return NO, i can't understand why, the url looks correct.

somebody can help my' thank you.

Was it helpful?

Solution

The primary issue is that you are creating the wrong directory. You need to create the imageFolder directory.

if ([self.fileManager createDirectoryAtURL:imageFolder withIntermediateDirectories:YES attributes:nil error:nil]) {

And note that you do not want the ! in the if statement.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top