Question

I have a strange problem, this code check if a file exist inside document folder:

- (BOOL) checkIfFileExist:(NSString *)path {    

    NSArray *documentsPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [documentsPaths objectAtIndex:0];
    NSString *fileDaControllere = [documentsDirectory stringByAppendingString:path];

    if ([[NSFileManager defaultManager] fileExistsAtPath:fileDaControllere]) {
        NSLog(@"exist");
        return YES;
    }
    else {
        NSLog(@"not exist");
        return NO;
    }
}

the problem is that I get alway file not exist while the file exist (in this case the path is Style.css)! where is the mistake? The path seems to be correct:

Path: /Users/kikko/Library/Application Support/iPhone Simulator/6.0/Applications/38161AFA-2740-4BE2-9EC4-C5C6B317D270/Documents/Style.css

Here you can see the path on xcode and real path

http://www.allmyapp.net/wp-content/iFormulario/1.png

http://www.allmyapp.net/wp-content/iFormulario/2.png

Was it helpful?

Solution 2

At the end I solved this issue, the strange think is that I don't know how I solved it, the first problem is that I pass to checkIfFifFileExist the absolute path while I need to pass it relative path, and the the function trasform it to absolute path (my big big error), after this I think the problem is the use of "/", I delete all and rewrite all the code and I doing some test.

I copy folder from bundle:

NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];

NSString *folderPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"/icone"];
NSString *iconePath = [documentsDir stringByAppendingPathComponent:@"/icone"];

[[NSFileManager defaultManager] copyItemAtPath:folderPath toPath:iconePath error:nil];

Then I make the path of my image in this way:

NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
 NSString *imagePath = [documentsDir stringByAppendingPathComponent:self.objMateria.iconaMateria];

and now the file exist, a strange thing is that if:

self.objMateria.iconaMateria = /icona/Home/fisica.png

or

self.objMateria.iconaMateria = icona/Home/fisica.png

nothing change, I see the image, while I think that one of this has a wrong path...

OTHER TIPS

The problem may be in the fact that you just append the file without with check if there is a path delimitor:

NSString *fileDaControllere = [documentsDirectory stringByAppendingString:path];

Thus you would become something like ../DocumentsStyle.css but it should be ../Documents/Style.css.

NSString has a special method for appending path components stringByAppendingPathComponent:

NSString *fileDaControllere = [documentsDirectory stringByAppendingPathComponent:path];
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top