2013-10-04 2 views
1

Я смотрю на это в течение нескольких часов и, похоже, не могу понять свою проблему. Вот мой кодnsdata writeToURL: atomically: возвращает true, но мой каталог появляется null

NSFileManager* fileManager = [[NSFileManager alloc] init]; 
        NSArray* urls = [fileManager URLsForDirectory:NSCachesDirectory inDomains:NSUserDomainMask]; 

       NSArray* directory = [fileManager contentsOfDirectoryAtURL:urls[0] includingPropertiesForKeys:@[@"NSCreatingDateKey"] options:NSDirectoryEnumerationSkipsHiddenFiles error:nil]; 
       NSLog(@"%@", directory); 
       NSURL* pathURL = [[urls objectAtIndex:0] URLByAppendingPathComponent:@"stanfordpictures/"]; 
       if ([directory count] < 3) { 
        [fileManager createDirectoryAtURL:pathURL withIntermediateDirectories:NO attributes:nil error:nil]; 
       } 
       NSString* pictureString = [NSString stringWithFormat:@"picture%d.png", self.cacheCounter]; 
       NSURL* pictureURL = [pathURL URLByAppendingPathComponent:pictureString]; 
       NSURL* absolutePictureURL = [pictureURL absoluteURL]; 
       NSLog(@"%@", pictureURL); 
       NSData *cacheImageData = UIImagePNGRepresentation(image); 
       if ([cacheImageData writeToURL:pictureURL atomically:YES]) 
       { 
        NSLog(@"It worked"); 
        NSArray* cacheDirectory = [fileManager contentsOfDirectoryAtPath:[pathURL absoluteString] error:nil]; 
        NSLog(@"%@", cacheDirectory); 
       } 
       else 
       { 
        NSLog(@"An error occurred"); 
       } 

И вот моя ошибка журнала

2013-10-03 22:36:48.920 Assignment4[14754:c07] (
"file://localhost/Users/ddelnano/Library/Application%20Support/iPhone%20Simulator/6.1/Applications/683F512B-7FFC-4C3E-9526-715B09AABD56/Library/Caches/com.DelNano.Dom.Assignment4/", 
"file://localhost/Users/ddelnano/Library/Application%20Support/iPhone%20Simulator/6.1/Applications/683F512B-7FFC-4C3E-9526-715B09AABD56/Library/Caches/Snapshots/", 
"file://localhost/Users/ddelnano/Library/Application%20Support/iPhone%20Simulator/6.1/Applications/683F512B-7FFC-4C3E-9526-715B09AABD56/Library/Caches/stanfordpictures/" 

)

file://localhost/Users/ddelnano/Library/Application%20Support/iPhone%20Simulator/6.1/Applications/683F512B-7FFC-4C3E-9526-715B09AABD56/Library/Caches/stanfordpictures/picture0.png 
2013-10-03 22:36:49.031 Assignment4[14754:c07] It worked 
2013-10-03 22:36:49.032 Assignment4[14754:c07] (null) 

Так в основном мой NSDatawriteToFile:atomically: возвращается верно, но когда я проверяю каталог "stanfordphotos" NSFileManager метод возвращает нулевой массив. Любая помощь будет принята с благодарностью.

+1

Избегайте '- [NSURL absoluteString]' при передаче аргументов в NSFileManager, использование - [\ [NSURL путь \] ] (https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/Reference/Reference.html#//apple_ref/occ/instm/NSURL/path). – CodaFi

ответ

0

Вышеупомянутый комментарий CodaFi замечательный, также, если вы хотите сделать то, что вы можете сделать, как показано ниже. Хотя я удалил эту строку. если это необходимо. NSArray* cacheDirectory = [fileManager contentsOfDirectoryAtPath:[pathURL absoluteString] error:nil]; Так что вы можете непосредственно извлечь имя файла в виде строки Inspite массива,: -

NSFileManager* fileManager = [[NSFileManager alloc] init]; 
    NSArray* urls = [fileManager URLsForDirectory:NSCachesDirectory inDomains:NSUserDomainMask]; 

    NSArray* directory = [fileManager contentsOfDirectoryAtURL:urls[0] includingPropertiesForKeys:@[@"NSCreatingDateKey"] options:NSDirectoryEnumerationSkipsHiddenFiles error:nil]; 
    NSLog(@"%@", directory); 
    NSURL* pathURL = [[urls objectAtIndex:0] URLByAppendingPathComponent:@"stanfordpictures/"]; 
    if ([directory count] < 3) { 
     [fileManager createDirectoryAtURL:pathURL withIntermediateDirectories:NO attributes:nil error:nil]; 
    } 
    NSString* pictureString = @"hussain_2156.pptx";//[NSString stringWithFormat:@"picture%d.png", self.cacheCounter]; 
    NSURL* pictureURL = [pathURL URLByAppendingPathComponent:pictureString]; 
    NSLog(@"%@", pictureURL); 
    NSData *cacheImageData = [NSData dataWithContentsOfFile:@"/Users/hussain/Desktop/hussain_2156.pptx"]; 
    if ([cacheImageData writeToURL:pictureURL atomically:YES]) 
    { 
     NSLog(@"It worked"); 
     NSString *file=nil; 
     NSDirectoryEnumerator *dirEnum = [fileManager enumeratorAtPath:[pathURL path]]; 
     while(file =[dirEnum nextObject]) 
     { 
      NSLog(@"%@",file); 
     } 
    } 
    else 
    { 

     NSLog(@"An error occurred"); 
    } 
+0

Ничего себе, я знал, что это должно быть что-то простое. – ddelnano

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