0

我想知道为什么这段代码不起作用。它适用于计算器 :) 我需要计算器识别符号(香蕉),并根据用户输入的内容使用 +,-。

NSString *list = [Sum_TextField text]; 
NSArray *listItemsArray = [list componentsSeparatedByString:@" "];
int batman = [[listItemsArray objectAtIndex: 0] intValue]; 
NSString *banana = [listItemsArray objectAtIndex: 1];
int joker = [[listItemsArray objectAtIndex: 2] intValue];
{

    Calculator* calc = [[Calculator alloc] init];
    [calc setNum1:batman];
    [calc setNum2:joker];
    if ((banana = @"-"))
    {
        [calc minus];
    }
    else if ((banana = @"+"))
    {
        [calc add];
    } 

    [Answer_TextField setText:[NSString stringWithFormat:@"%d", [calc answer]]];  
}
}
4

3 回答 3

2

要判断 NSString 是否相等,必须使用[@"AAAA" isEqualToString : @"BBBB"]. 你不能使用==,因为它们不在同一个地址的内存中。

于 2012-07-24T04:00:26.537 回答
1

以下是您想要执行此操作的方法:

 if ([banana isEqualToString:@"-"])
 {
     [calc minus];
 }
 else if ([banana isEqualToString:@"+"])
 {
     [calc add];
 } 
于 2012-07-24T03:56:49.623 回答
1

=是赋值。这与比较完全无关。

==正在比较两个表达式,看看它们是否相等。这可用于比较整数类型(例如enum, char, int, short, long, long long, BOOL)或引用(检查 2 个指针是否指向同一个对象)。请注意,2 个指针可以指向 2 个不同的对象,其中包含相同的值,但==会将它们比较为不同。(浮点类型,例如floatdouble需要稍微不同的方法来比较相等性)。

=作为一种避免和之间混淆的方法==,对于与 的相等性测试==,有些人将值放在左侧,将变量放在右侧(例如2 == variable)。如果他们碰巧输错===,编译器会抱怨。

如果要比较 2 个对象的内容,在这种情况下是NSString,您应该搜索isEquals函数类型。对于,如果要比较两个字符串是否具有相同的内容NSString,则应使用。isEqualToString

于 2012-07-24T04:03:31.713 回答