嘿伙计们我正在尝试制作一个基本的计算器(波兰风格),但无法弄清楚为什么我的代码停止双十进制输入将无法正常工作。我在另一个线程上找到了一种不同的方式,但我想了解为什么我的代码不起作用。我正在使用nsRange搜索标签中已经输入的数字为小数,然后是第二个条件,以查看要追加的数字是否为小数请帮助..
- (IBAction)digitPressed:(UIButton *)sender
{
NSString *digit = [sender currentTitle]; // the number on the button pressed
NSString *decimalErrorChecker = [[self display] text]; //search line for .
NSRange range = [decimalErrorChecker rangeOfString:@"."];
if ((range.location != NSNotFound) && ((digit == @"."))) { //double if to stop 2nd
//SHOW ERROR
}else //APPEND DIGIT TO ALREADY ENTERED String.
答案 0 :(得分:2)
使用isEqualToString
比较NSString,而不是==
:
if ((range.location != NSNotFound) && [digit isEqualToString: @"."])
答案 1 :(得分:0)
为什么不保留一个标志,指示是否输入了小数?
-(IBAction)digitPressed:(id)sender {
static BOOL didDecimal = NO;
// setup yadda
const BOOL digitIsDecimal = [digit isEqualToString:@"."]; // your use of == here is bad
if (digitIsDecimal && didDecimal) { error; return; }
didDecimal |= digitIsDecimal;
// append yadda
}
当然,如果用户删除了小数,这没有用,所以你可能需要在UITextViewDelegate中实现一些逻辑......