我在iTunes中有一个应用程序可以在iOS 4.3& 5.在iOS 6中,它在实际设备和模拟器中都无法正常工作。我查看了代码并且没有看到任何问题。尽管如此,iOS6中的if / then语句似乎存在问题。应用程序的功能高度依赖于if / then语句,例如下面的语句......
if (pageTitle.text == @"Alpha")
{
fieldName.text = @"A";
anotherFieldName.text = @"AlphaText";
}
else {}
以上内容根据pageTitle.text的值是否为“Alpha”而不是更改文本。这一直很好。但是,在iOS6中,即使pageTitle.text等于“Alpha”,它也永远不会评估为true。同样,这只发生在iOS6中。我已插入NSLog语句以确认pageTitle.text实际上等于“Alpha” - 它确实如此。尽管如此,它从不评估上述内容(换句话说,NSLog表示pageTitle.text等于“Alpha”,但上面的代码永远不会将pageTitle.text评估为“Alpha”)。这仅发生在iOS6中。
有没有人有任何想法?对我来说似乎“不可能”,iOS6中基本的东西会发生变化......但也许我错过了一些东西?或者你认为这可能是iOS6中的一个错误?任何帮助都会被激起。谢谢。
答案 0 :(得分:3)
您的代码问题不在if-else逻辑中,而是在if条件中。比较两个字符串是否相等的正确方法是:
if ([pageTitle.text isEqualToString:@"Alpha"])
{
fieldName.text = @"A";
anotherFieldName.text = @"AlphaText";
}
else
{
...
}
有关平等与身份的进一步讨论,请阅读this.
答案 1 :(得分:2)
if( pageTitle.text == @"Alpha" )
在这里,您将两个指针与对象进行比较。其中一个是NSString
文字
显然,在比较内存地址时,比较将失败。
如果要测试两个NSString
个对象是否相等,请使用:
if( [ pageTitle.text isEqualToString: @"Alpha" ] == YES )
然后你将进行真正的字符串比较。