2012-04-26 15 views
27

Obtengo un "Desaparecido el contexto para la declaración de método" para mi método de descripción reemplazado. ¿Puedes decir lo que está mal con el código?"Falta el contexto para la declaración de método" para el método de descripción reemplazado

#import <Foundation/Foundation.h> 
#import "BNRItem.h" 

int main(int argc, const char * argv[]) 
{ 

    @autoreleasepool { 

     // Create a mutable array object, store its address in items variable 
    NSMutableArray *items = [[NSMutableArray alloc]init]; 

    BNRItem *p = [[BNRItem alloc]init]; 
    NSLog(@"%@ %@ %@ %d", [p itemName], [p dateCreated], [p serialNumber], [p valueInDollars]); 

    // This creates a new NSString, "Red Sofa" and gives it to the BNRItem 
    [p setItemName:@"Red Sofa"]; 

    // This creates a new NSString, "A1B2C" and gives it to the BNRItem 
    [p setSerialNumber:@"A1B2C"]; 

    // We send the value 100 to be used as the valueInDollars of this BNRItem 
    [p setValueInDollars:100]; 

    // Destroy the array pointed to by items 
    items = nil; 

    } 
    return 0; 
} 

-(NSString *)description // Missing context for method declaration 
{ 
    NSString *descriptionString = 
    [[NSString alloc]initWithFormat:@"%@ (%@): Worth $%d, recorded on %@", 
    itemName; 
    serialNumber; 
    valueInDollars; 
    dateCreated]; 

return descriptionString; 

} 

BNRItem.m

#import "BNRItem.h" 

@implementation BNRItem 

-(void)setItemName:(NSString *)str { 
    itemName = str; 
} 

-(NSString *)itemName { 
    return itemName; 
} 

-(void)setSerialNumber:(NSString *)str { 
    serialNumber = str; 
} 

-(NSString *)serialNumber { 
    return serialNumber; 
} 

-(void)setValueInDollars:(int)i { 
    valueInDollars = i; 
} 

-(int)valueInDollars { 
    return valueInDollars; 
} 

-(NSDate *)dateCreated { 
    return dateCreated; 
} 

-(NSString *)description 
{ 
    NSString *descriptionString = 
    [[NSString alloc]initWithFormat:@"%@ (%@): Worth $%d, recorded on %@", 
    itemName, 
    serialNumber; // Expected "]" 
    valueInDollars, // Expression result unused 
    dateCreated]; //Extraneous "]" before ";" 

    return descriptionString; 
} 


@end 
+0

Gracias. He movido el método de descripción a BNRItem.m, pero ahora tengo un conjunto diferente de problemas. Han pegado en BNRItem.m arriba. – pdenlinger

Respuesta

54

Su método parece ser que flotan libremente en el interior main.m. Se debe colocar un método de instancia dentro de la sección de implementación de una clase. (entre @implementation y @end).

Supongo que deberías mover ese código a BNRItem.m.

+0

Gracias. He movido el método de descripción a BNRItem.m, pero ahora tengo un conjunto diferente de problemas. Han pegado en BNRItem.m arriba. – pdenlinger

+0

@pdenlinger: los errores se deben a que coloca un punto y coma en lugar de dos puntos después de 'número de serie'. – Chuck

+0

@Chuck te refieres a un punto y coma en lugar de una coma, ¿verdad? Aunque es tarde aquí ... – jrturton

1

Si tiene algo así como un carácter al principio de su archivo Header oder .m, también es probable que este error se acumule.

^// 
// EMServices.m 
// MyController 
// 
// Created by EMart on 09.01.14. 
// Copyright (c) 2014 EMart. All rights reserved. 
// 
Cuestiones relacionadas