我有一个应该返回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 __NSCFString * 0x6b9a0b0
并返回任何29938idontknow
值。
如果我致电[self function:@"test1"]
,一切正常。
detailItem
是TV
的类型,NSManagedObject
,其属性type
定义为string
。应该是string
- 类型的问题吗?
谢谢!
答案 0 :(得分:4)
您应该像这样比较NSString:
if ([input isEqualToString:@"test1"])
{
// Some code here
}
答案 1 :(得分:1)
检查self.detailItem.type是否为NSString:
if ([self.detailItem.type isKindOfClass:[NSString class]])
之前打电话
[self function:self.detailItem.type]
并比较像这样的字符串
[input isEqualToString:@"test1"];
您目前正在比较内存地址,在这种情况下总是不同,您应该比较它们包含的字符串。