Сложность печати имен файлов с помощью ObjC - PullRequest
0 голосов
/ 10 января 2011

У меня проблемы с печатью списка имен файлов, полученных с помощью NSFileManager. Документация говорит, что возвращает массив строк - но мой вывод пуст. В приведенном ниже примере кода выполнение показывает индекс с двоеточием и ничем иным ... Я долгое время программист на Java, но я новичок в c / objc. Я просто неправильно использую printf? Спасибо за вашу помощь!

Выход:
О печати списка файлов -----------------------
Количество файлов: 29
0: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:

- (IBAction)printFileList:(id)sender{
NSFileManager *fm = [[NSFileManager alloc] init];
NSString *path = @"/";
NSArray *files = [fm contentsOfDirectoryAtPath:path error:NULL];
printf("About to print file list ----------------------- \n");
int fileCount = [files count];
printf("Number of files: %d", fileCount);
for(int i = 0; i<fileCount; i++){
    printf("%d: %s\n", i, [files objectAtIndex:i]);
}

}

1 Ответ

3 голосов
/ 10 января 2011

Нельзя использовать %s в качестве спецификатора формата для NSString *, поскольку NSString * - это указатель, а не строка C. Измените printf строку на:

printf("%d: %s\n", i, [[files objectAtIndex:i] UTF8String]);
...