Objective c UIActionSheet标题的比较失败

Objective c UIActionSheet标题的比较失败,objective-c,nsstring,ios6,uiactionsheet,Objective C,Nsstring,Ios6,Uiactionsheet,我只在iOS 6上遇到问题。 这段代码适用于所有其他版本。 我没有收到任何警告 如果条件不满足,代码就不会进入。 即使NSLog将Buttontile的值正确显示为“选择目标”,它也无法将present.title与字符串Select Goal进行比较 -(作废)操作表:(UIActionSheet*)演示表单击按钮索引:(NSInteger)按钮索引{ NSString*buttonTitle=[presentSheet buttonTitle索引:buttonIndex]; NSLog(@“

我只在iOS 6上遇到问题。
这段代码适用于所有其他版本。
我没有收到任何警告

如果条件不满足,代码就不会进入。
即使NSLog将Buttontile的值正确显示为“选择目标”,它也无法将
present.title
与字符串
Select Goal
进行比较

-(作废)操作表:(UIActionSheet*)演示表单击按钮索引:(NSInteger)按钮索引{
NSString*buttonTitle=[presentSheet buttonTitle索引:buttonIndex];
NSLog(@“按钮标题为%@”,按钮标题);
actionSheet.delegate=self;
如果(presentSheet.title=@“选择目标”){
self.goalsTextField.text=按钮;
[self.goalsTextField辞职FirstResponder];
}
如果(presentSheet.title=@“选择级别”){
self.levelTextField.text=按钮;
[self.levelTextField resignFirstResponder];
}
}

我不确定为什么比较失败,但我可以让您感兴趣吗?我一直认为
UIAlertView
UIActionSheet
的回调API非常糟糕,因为它对代码更改非常脆弱,对按钮的运行时参数检查有点混乱


UIAlertView+Blocks
UIActionSheet+Blocks
将为您提供一个基于块的API,您可以更轻松地动态确定向用户显示哪些选项,但更重要的是,在用户做出选择时执行一个关于应该发生什么的块。对于开发人员来说,这个API的脆弱性和易出错性是无穷的。它还使您不必在视图控制器中有多个警报和操作表时进行任何条件编码。总之,这是纯粹的胜利。我非常困惑苹果为什么没有在UIKit中创建一个基于块的API。

不要与
=
进行字符串比较,使用
isEqualToString:
你不能使用
=
比较字符串值,你正在尝试比较NSString对象,并通过编写类似
presentSheet.title==@“选择目标”
您正在比较对象指针(即内存位置,它们并不总是相同的。事实上可能几乎从未如此。),而不是您认为正在比较的字符串值

要比较字符串值,有NSString方法,您需要的方法是:

if([presentSheet.title isEqualToString:@"Select Goal"])

这应该就够了。

你完全正确,但是直到你在网络上的任何地方出现iOS6之前,这都是处理警报事件的常见行为,而且效果很好……所以这两个选项都是有效的。你知道发生了什么变化吗?我不知道如何可靠地工作……你能给我举一些例子吗?我以前从未见过。