Search code examples
nsdatawritetofilecs193p

NSdata writeToURL not working


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.


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.