我想知道为什么这段代码不起作用。这是一个计算器:) 我需要计算器识别符号(香蕉),并根据用户的输入使用+, -
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]]];
}
}
答案 0 :(得分:2)
要判断NSString是否相等,您必须使用[@"AAAA" isEqualToString : @"BBBB"]
。您不能使用==
,因为它们不在内存的同一地址中。
答案 1 :(得分:1)
以下是您要执行此操作的方式:
if ([banana isEqualToString:@"-"])
{
[calc minus];
}
else if ([banana isEqualToString:@"+"])
{
[calc add];
}
答案 2 :(得分:1)
=
是作业。它与比较完全无关。
==
正在比较两个表达式,看看它们是否相等。这可用于比较整数类型(例如enum
,char
,int
,short
,long
,long long
,{{1 }}或引用(检查2个指针是否指向同一个对象)。请注意,2个指针可以指向2个不同的对象,其中包含相同的值,但BOOL
会将它们作为不同的值进行比较。 (==
和float
等浮点类型需要稍微不同的方法来比较相等性。
作为一种抢占double
和=
之间混淆的方法,对于==
的等式测试,有些人将值放在左侧,而变量放在右侧方(例如==
)。如果他们错误地将2 == variable
错误地输入到==
,编译器会抱怨。
如果要比较2个对象的内容,在本例中为=
,则应搜索NSString
类型的函数。对于isEquals
,如果要比较2个字符串是否具有相同内容,则应使用NSString
。