2010-05-20 2 views
1

Я пытаюсь получить список каталогов, содержащихся в подпути моего пакета приложений. Я сделал некоторый поиск, и это то, что я придумалСправка: Список содержимого подкаталога пакета приложений iPhone?

- (void) contents { 
NSArray *contents = [[NSBundle mainBundle] pathsForResourcesOfType:nil 
               inDirectory:@"DataDir"]; 
if (contents = nil) { 
    NSLog(@"Failed: path doesn't exist or error!"); 
} else { 
    NSString *bundlePathName = [[NSBundle mainBundle] bundlePath]; 
    NSString *dataPathName = [bundlePathName stringByAppendingPathComponent: 
           @"DataDir"]; 
    NSFileManager *fileManager = [NSFileManager defaultManager]; 

    NSMutableArray *directories = [[NSMutableArray alloc] init]; 
    for (NSString *entityName in contents) { 
      NSString *fullEntityName = [dataPathName 
             stringByAppendingPathComponent:entityName]; 
      NSLog(@"entity = %@", fullEntityName); 
      BOOL isDir = NO; 
      [fileManager fileExistsAtPath:fullEntityName isDirectory:(&isDir)]; 
      if (isDir) { 
       [directories addObject:fullEntityName]; 
       NSLog(@" is a directory"); 
      } else { 
       NSLog(@" is not a directory"); 
      } 
     } 
     NSLog(@"Directories = %@", directories); 

     [directories release]; 
} 
} 

Как вы можете видеть, что я пытаюсь получить список каталогов в DATADIR подпути в App Bundle в. Проблема в том, что я не получаю никаких строк в моем содержимом NSArray.

примечание:
- Я использую тренажер
- Когда я вручную смотрите в файле .app я могу увидеть DATADIR и содержание в нем
- содержание DATADIR являются PNG файлы и каталоги, которые содержат файлы в формате PNG
- логика приложения необходимо открыть содержимое DATADIR во время выполнения
- Я также попытался с помощью

NSArray *contents = [fileManager contentsOfDirectoryAtPath:DataDirPathName error:nil]; 

и я до сих пор не получают никаких записей в моем содержимое массива

Любые предложения/альтернативные подходы?

Спасибо.

ответ

2

Я не уверен, что я делаю неправильно, но вчера у меня есть этот код работать:

NSString *bundlePathName = [[NSBundle mainBundle] bundlePath]; 
NSString *dataPathName = [bundlePathName stringByAppendingPathComponent:@"DataDir"]; 
NSFileManager *fileManager = [NSFileManager defaultManager]; 
    if ([fileManager fileExistsAtPath:dataPathName]) { 
     NSLog(@"%@ exists", dataPathName); 
     BOOL isDir = NO; 
     [fileManager fileExistsAtPath:dataPathName isDirectory:(&isDir)]; 
     if (isDir == YES) { 
      NSLog(@"%@ is a directory", dataPathName); 
      NSArray *contents; 
      contents = [fileManager contentsOfDirectoryAtPath:dataPathName error:nil]; 
      for (NSString *entity in contents) { 
       NSLog(@"%@ is within", entity); 
      } 
     } else { 
      NSLog(@"%@ is not a directory", dataPathName); 
     } 
    } else { 
     NSLog(@"%@ does not exist", dataPathName); 
    } 
Смежные вопросы