0

Objective-C の初心者で、iOS5 用のプログラミング計算機に取り組んでいます。

すべてが通常の古い数字でうまく動作します:

- (void)pushOperand:(double)operand
{
[self.programStack addObject:[NSNumber numberWithDouble:operand]];
}

しかし、変数のテスト番号を含む辞書を作成すると、次のようになります。

- (void) pushOperandAsVariable:(NSObject *)variable
{
//Create dictionary
NSArray *objects = [[NSArray alloc] initWithObjects:[NSNumber numberWithDouble:3],[NSNumber numberWithDouble:4.1],[NSNumber numberWithDouble:-6],[NSNumber numberWithDouble:4.5298], nil];
NSArray *keys = [[NSArray alloc] initWithObjects:@"x",@"y",@"z",@"foo", nil];
NSDictionary *variableValues = [[NSDictionary alloc] initWithObjects:objects forKeys:keys];

NSNumber *operand;
//Check variableValues for keys
for (int i=0; i<keys.count; i++)
{
    if ([keys objectAtIndex:i]==variable)
    operand = [variableValues objectForKey:variable];
}
NSLog(@"%@, %@",variable,operand);
[self.stackOfThingsSinceLastClear addObject:operand];

}

最後から 2 番目の行の NSLog は常に "x, (null)" になります。オペランドが消えているということは、何が欠けていますか?

4

1 に答える 1

3

オブジェクトに対して定義された演算子はありません==(ポインター値を比較します)。

メソッドを使用しisEqual:ます。

于 2012-07-30T00:51:51.300 に答える