2012-03-05 12 views
7

私がコメントアウトしたモデルの実装ファイルにエラーがあります。この問題を解決するにはどうすればよいですか?目に見えるインタフェースエラーがありません

ありがとうございます。

#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 

答えて

4

あなたはNSMutableSetとしてあなたoperandStackプロパティを宣言しているが、あなたはNSMutableArrayとしてそれを宣言しておく必要があります。

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

OK、うまくいきました。ありがとうございました。 – pdenlinger

1

あなたがNSSetの「最後のオブジェクト」を取得しようとしている - これはあります不可能です。セットは順序付けされていません。メソッドlastObjectはNSMutableSetには存在しません。

代わりにNSMutableArrayを使用してみてください。

関連する問題