2012-03-05 13 views
7

Tengo un error en el archivo de implementación de mi modelo que he comentado. ¿Qué puedo hacer para solucionar este problema?No hay error de interfaz visible

Gracias de antemano.

#import "CalculatorBrain.h" 

@interface CalculatorBrain() 
@property (nonatomic, strong) NSMutableSet *operandStack; 
@end 

@implementation CalculatorBrain 

@synthesize operandStack = _operandStack; 

- (NSMutableArray *)operandStack 
{ 
    if (!_operandStack) { 
     _operandStack = [[NSMutableArray alloc] init]; 
    } 
    return _operandStack; 
} 

-(void)pushOperand:(double)operand 
{ 
    NSNumber *operandObject = [NSNumber numberWithDouble:operand]; 
    [self.operandStack addObject:operandObject]; 
} 

- (double)popOperand 
{ 
    NSNumber *operandObject = [self.operandStack lastObject]; // No visible interface for 'NSMutableSet' declares the selector 'lastObject' 
    if(operandObject) [self.operandStack removeLastObject]; // No visible interface for 'NSMutableSet' declares the selector 'removeLastObject' 
    return [operandObject doubleValue]; 
} 

- (double)performOperation:(NSString *)operation 
{ 
    double result = 0; 

    if([operation isEqualToString:@"+"]) { 
     result = [self popOperand] + [self popOperand]; 
    } else if ([@"*" isEqualToString:operation]) { 
     result = [self popOperand] * [self popOperand]; 
    } else if ([operation isEqualToString:@"-"]) { 
     double subtrahend = [self popOperand]; 
     result = [self popOperand] - subtrahend; 
    } else if ([operation isEqualToString:@"/"]) { 
     double divisor = [self popOperand]; 
     if (divisor)result = [self popOperand]/divisor; 
    } 

    [self pushOperand:result]; 

    return result; 

} 


@end 

Respuesta

4

Usted ha declarado su propiedad operandStack como NSMutableSet, pero que debería haber declarado como un NSMutableArray:

@property (nonatomic, strong) NSMutableArray *operandStack; 
+0

Bien, funcionó bien. Gracias. – pdenlinger

1

Usted está tratando de obtener el "último objeto" de un NSSet - esto es imposible, ya que los conjuntos están desordenados. El método lastObject no existe para NSMutableSet.

En su lugar, puede intentar usar un NSMutableArray.

Cuestiones relacionadas