无法执行逻辑NSString *

时间:2012-11-23 03:34:19

标签: objective-c

  

可能重复:
  Comparing Strings in Cocoa

我需要在NSString*变量上执行逻辑。

如果我执行以下操作,则可以正常工作:

my_label_3.text = local_db_user.lifetime_subscription;

UI中的标签会填充文本True

但以下内容会返回NO

local_db_user.lifetime_subscription == @"True"     

我对此伪代码使用什么代码:

if local_db_user.lifetime_subscription == True
    do this
else
    do this other thing

我的手表,在调试期间,在local_db_user.lifetime_subscription上显示:

{NSString * | 0x764e210} "True"

3 个答案:

答案 0 :(得分:1)

if([local_db_user.lifetime_subscription isEqualToString:@"True"])
 {
        //do the task here
 }
 else
{

}

答案 1 :(得分:0)

您应该使用isEqualToString:来比较NSString对象。

正如Apple doc所指出的那样:

- (BOOL)isEqualToString:(NSString *)aString
  

返回一个布尔值,指示给定的字符串是否相等   使用基于Unicode的文字比较来接收接收器。

所以要回答你的问题,你的代码应该是这样的:

if ([local_db_user.lifetime_subscription isEqualToString:@"True"]) {
    // is equal
}
else {
    // is different
}

答案 2 :(得分:0)

使用等于运算符(==)比较对象,检查内存地址。 所以比较你必须使用的NSString对象

  • (BOOL)isEqualToString:(NSString *)aString;

方法。
对于您自己的(自定义类)对象,必须覆盖以下方法。

  • (BOOL)isEqual:方法(ID)anObject