2011-01-10 20 views
0

Ich habe Probleme beim Drucken einer Liste von Dateinamen, die mit NSFileManager abgerufen wurden. Die Dokumentation sagt, dass es ein Array von Strings zurückgibt - aber meine Ausgabe ist leer. Im folgenden Codebeispiel zeigt die Ausführung den Index mit Doppelpunkt und nichts anderes ... Ich bin ein langjähriger Java-Programmierer, aber insgesamt newb zu c/objc. Missbrauche ich nur printf? Danke für Ihre Hilfe!Problem beim Drucken von Dateinamen mit ObjC

Ausgang:
über Dateiliste -----------------------
Anzahl der Dateien drucken: 29
0: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 012.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]); 
} 

}

Antwort

3

Sie können %s nicht als Formatbezeichner für NSString * verwenden, da NSString * ein Zeiger und keine C-Zeichenfolge ist. Ändern Sie Ihre printf Zeile:

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

Könnte die Linie auch geändert werden "% d:% s \ n" auf "% d:% @ \ n"? – KevinDTimm

+1

@KevinDTimm: Nein, '% @' funktioniert nur mit 'NSLog' und seiner Art. – mipadi

+0

Arbeitete! Macht vollkommen Sinn, danke! – Quad64Bit