2011-10-23 6 views
0

Je suis un développeur débutant. Je me suis arrêté avec cette erreur à propos de:Clang LLVM 1.0 Erreur objectif-c

Clang LLVM 1.0 Error 
Expected ':' 

line: [pipe fileHandleForReading availableData] 

Quelqu'un peut-il m'aider? Merci d'avance.

- (NSInteger)sizeOfItemAtPath:(NSString*)path { 
    BOOL isdir; 
    [[NSFileManager defaultManager] fileExistsAtPath:path isDirectory:&isdir]; 
    if (isdir) { 
     NSPipe *pipe = [NSPipe pipe]; 
     NSTask *t = [[[NSTask alloc] init] autorelease]; 
     [t setLaunchPath:@"/usr/bin/du"]; 
     [t setArguments:[NSArray arrayWithObjects:@"-k", @"-d", @"0", path, nil]]; 

     [t setStandardOutput:pipe]; 
     [t setStandardError:[NSPipe pipe]]; 
     [t launch]; 
     [t waitUntilExit]; 

     NSString *sizeString = [[[NSString alloc] initWithData:[[pipe fileHandleForReading availableData] encoding:NSASCIIStringEncoding] autorelease]; 
     sizeString = [[sizeString componentsSeparatedByString:@" "] objectAtIndex:0]; 
     BOOL bytes; 
     bytes = [sizeString longLongValue]*1024; 
    } 
    else { 
     BOOL bytes; 
     bytes = [[[NSFileManager defaultManager] attributesOfItemAtPath:path error:nil] fileSize]; 
    } 
    BOOL bytes; 
    return bytes; 
} 

Répondre

3

Il vous manque un ]: il doit être

[[pipe fileHandleForReading] availableData] 

La ligne entière doit ressembler à ceci:

NSString *sizeString = [[[NSString alloc] initWithData:[[pipe fileHandleForReading] availableData] encoding:NSASCIIStringEncoding] autorelease]; 

également , votre méthode retournera des ordures. En effet, vous avez défini bytes trois fois: une fois dans la branche if, une fois dans la branche else et une fois dans le corps de la méthode englobante. La valeur de retour sera prise à partir du dernier, mais celui-ci est initialisé. Non seulement cela, mais vous utilisez le mauvais type: il doit être un NSInteger bytes;, pas BOOL bytes;. Vous devez mettre la définition au début de la méthode et supprimer toutes les autres définitions, la variable peut n'exister qu'une seule fois.

+0

Merci! J'ai résolu le problème. – Giovanni

0

Essayez ceci:

[[pipe fileHandleForReading] availableData] 
Questions connexes