Iphone 为什么我的UILabel无法识别“IsequalString:”?
可能重复: 为什么下面的代码不起作用Iphone 为什么我的UILabel无法识别“IsequalString:”?,iphone,objective-c,ios,xcode,uilabel,Iphone,Objective C,Ios,Xcode,Uilabel,可能重复: 为什么下面的代码不起作用 if([Period2 isEqualToString:@"PSHEEC"]) { NSLog(@"TEST"); } 我得到这个错误: 2011-12-02 08:45:52.579 iDHSB[7605:707]-[UILabel IsequalString:]: 已将无法识别的选择器发送到实例0x4884c50 2011-12-02 08:45:52.581 iDHSB[7605:707]*由于未捕获而终
if([Period2 isEqualToString:@"PSHEEC"])
{
NSLog(@"TEST");
}
我得到这个错误:
2011-12-02 08:45:52.579 iDHSB[7605:707]-[UILabel IsequalString:]:
已将无法识别的选择器发送到实例0x4884c50 2011-12-02
08:45:52.581 iDHSB[7605:707]*由于未捕获而终止应用程序
异常“NSInvalidArgumentException”,原因:'-[UILabel]
isEqualToString::无法识别的选择器发送到实例0x4884c50'
*第一次抛出调用堆栈:0x323e28bf 0x35cfa1e5 0x323E5945 0x3233f680 0x3152b191 0x9c905 0x316cf871 0x323e5814
0x323407e1 0x323403ff 0x34767e5b 0x323e4ab3 0x3233f680 0x323e5814
0x323407e1 0x33dcb43d 0x33dde8dd 0x323b6b03 0x323b62cf 0x323b5075
0x323384d5 0x3233839d 0x378b7439 0x315558e1 0x2d77 0x27c0终止
调用引发异常[切换到进程7171线程0x1c03]
gdb
如果period2是您的标签,请使用
[period2.text isEqualToString:@"PSHEEC"]
这可能会有帮助
NSString *str = label.text;
if([str isEqualToString:@"PSHEEC"])
{
NSLog(@"Equal");
}
else
{
NSLog(@"Not Equal");
}您收到的错误可能是由于内存管理问题,Period2的指针不再指向您的字符串,而是指向某个标签。确保您正确地保留了它
另一方面,变量、属性和方法不应以大写字母开头,如果标签是属性,则应使用self.period2。什么是period2?你不能用那种方法测试等价性。如果要测试字符串等价性,需要执行以下操作: 假设Period2是一个NSString
if ([Period2 isEqualToString:@"PSHEEC]) {
NSLog(@"They are equal.");
}
但是Period1是一个NSString…:梭利输入错误,请重新阅读我的问题是的,我明白,这是内存管理错误。请看我的答案,我已经重写了它。在给定的异常描述中,它清楚地提到了…由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[UILabel isEqualToString:]:发送到实例0x4884c50的未识别选择器基于此,Period2是UILabel而不是NSString!”!这就是错误的原因,Period2是UILabel的NSString…这是一个合理的答案,但问题编辑使其不相关。打印Period2值可以检查字符串是否正确