Ios 函数的返回值错误(可能是错误的字符串“type”?)

Ios 函数的返回值错误(可能是错误的字符串“type”?),ios,xcode,string,function,Ios,Xcode,String,Function,我得到了一个函数,它应该返回一个int值 - (int)function:(NSString *)input { if (input == @"test1") { return 0; } if (input == @"test2") { return 1; } if (input == @"test3") { return 2; } else { return 3; } }

我得到了一个函数,它应该返回一个
int

- (int)function:(NSString *)input
{
 if (input == @"test1")
    {
        return 0;  
    }
 if (input == @"test2")
    {
        return 1;  
    }
 if (input == @"test3")
    {
        return 2;  
    }
 else
{
    return 3;
}
}
这里我调用函数:

[self function:self.detailItem.type]
调试器显示
input\uu NSCFString*0x6b9a0b0
,并返回任何
29938idontknow

- (int)function:(NSString *)input
{
 if (input == @"test1")
    {
        return 0;  
    }
 if (input == @"test2")
    {
        return 1;  
    }
 if (input == @"test3")
    {
        return 2;  
    }
 else
{
    return 3;
}
}
如果我调用
[self function:@“test1”]
一切正常

detailItem
TV
的类型,它是一个
NSManagedObject
,其属性
type
定义为
string
字符串
-类型是否有问题


谢谢大家!

您应该像这样比较NSString:

if ([input isEqualToString:@"test1"])
{
    // Some code here
}

您应该像这样比较NSString:

if ([input isEqualToString:@"test1"])
{
    // Some code here
}

检查self.detailItem.type是否为NSString:

if ([self.detailItem.type isKindOfClass:[NSString class]])
打电话之前

[self function:self.detailItem.type]
比较这样的字符串

[input isEqualToString:@"test1"];

您当前正在比较内存地址,在这种情况下,内存地址总是不同的。您应该比较它们包含的字符串。

检查self.detailItem.type是否为NSString:

if ([self.detailItem.type isKindOfClass:[NSString class]])
打电话之前

[self function:self.detailItem.type]
比较这样的字符串

[input isEqualToString:@"test1"];
您当前正在比较内存地址,在这种情况下,内存地址总是不同的。您应该比较它们所包含的字符串。

请尝试[input isEqualToString:“xxx”]来比较字符串。请尝试[input isEqualToString:“xxx”]来比较字符串。