Нет видимой ошибки интерфейса

У меня есть ошибка в файле реализации для моей модели, которую я закомментировал. Что я могу сделать, чтобы решить эту проблему?

Заранее спасибо.

#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

2 ответа

Решение

Вы объявили свой operandStack собственность как NSMutableSet, но вы должны были объявить это как NSMutableArray:

@property (nonatomic, strong) NSMutableArray *operandStack;

Вы пытаетесь получить "последний объект" NSSet - это невозможно, так как множества неупорядочены. Метод lastObject не существует для NSMutableSet.

Вы могли бы хотеть попробовать использовать NSMutableArray вместо этого.

Другие вопросы по тегам