我使用isEqualToString
比较两个字符串?如下:
if ( [ somethingString isEqualToString: @"MyString" ] )
{ //do something } else { //do something else }
现在,我已经使用somethingString
检查了NSLog
,看起来没问题,因为它显示了我的预期。但是,if语句不起作用。
我在想,即使调试器在执行if之前显示了该对象,该类型或其他东西也不对。
somethingString来自UIPickerView
,其中填充了一系列对象......如果这有任何区别。
有什么想法吗?
PS。我尝试过使用比较:这肯定不起作用。
答案 0 :(得分:0)
你应该if ([somethingString compare: @"MyString"] == NSOrderedSame) { //do stuff }
答案 1 :(得分:0)
您没有提供足够的信息。如果somethingString
是NSString
的子类(如果不是,它可能不会首先实现isEqualToString:
)并且其值等于“MyString”,则{{1} }将返回[somethingString isEqualToString: @"MyString"]
。
答案 2 :(得分:0)
您是否可以发布simple, self-contained example代码无效的代码? isEqualToString
是正确的调用方法,问题将出现在其他地方。你确定这两个对象都有效吗?也许其中一个已被解除分配或nil
。你不是把指针等价(foo == bar
)与内容等价([foo isEqualToString:bar]
)混淆了吗?
答案 3 :(得分:0)
根据zoul的要求,这里是代码和日志......
母亲= @“母亲”;
if([savedFirstNotice isEqualToString:mother])
{ NSLog ( @"Mother was triggered") }
else
{ NSLog (@"Mother was not choosen");
NSLog (@"savedFirstNotice is: %@", savedFirstNotice);
NSLog (@"mother is: %@", mother);
}
2010-08-02 20:34:16.337 SafetyKnight [4492:307]母亲没有被选中
2010-08-02 20:34:16.338 SafetyKnight [4492:307] savedFirstNotice是:母亲
2010-08-02 20:34:16.339 SafetyKnight [4492:307]母亲是:母亲
另请注意,savedFirstNotice已声明为NSString。似乎母亲相当于母亲而“母亲被触发”应该是正确的反应。
答案 4 :(得分:0)
对于那些无法弄清楚isEqualToString正在做什么的新手,我这样做是为了解决我的问题。
(1)检查两个字符串是否为CFEqual。 (2)在这两种情况下,按字符解析字符串。在我的情况下,两个字符串长度不相同,从调试器到我没有意义。解析savedFirstNotice字符串后,无论出于何种原因,应用程序在字符串前面添加一个空格,在字符串后面添加两个空格。到目前为止,它似乎是一个一致的操作,所以我很容易从我在方法中使用的所有变量中消除它。
感谢大家的建议 - 那些有效且不起作用的人给了我思考的想法或想法。
以下是发现我的问题的代码:
if (CFEqual (savedFirstNotice , mother ))
{ NSLog (@" Both savedFirstNotice and mother are Equal") ; }
else
{ NSLog ( @" savedFirstNotice and mother are NOT Equal ") ;
NSLog ( @" The length of savedFirstNotice is %d", savedFirstNotice.length );
NSLog ( @" The length of mother is %d", mother.length );
NSLog ( @" savedFirstNotice character 0 %c ",[ savedFirstNotice characterAtIndex: 0 ]);
NSLog ( @" savedFirstNotice character 1 %c ",[ savedFirstNotice characterAtIndex: 1 ]);
// duplicate to capture the entire string
}
另外,我建议您阅读有关CFEqual和相关项目的Apple文档。