了解Objective-C逻辑

时间:2012-02-22 19:21:34

标签: objective-c if-statement nsstring

嘿伙计们我正在尝试制作一个基本的计算器(波兰风格),但无法弄清楚为什么我的代码停止双十进制输入将无法正常工作。我在另一个线程上找到了一种不同的方式,但我想了解为什么我的代码不起作用。我正在使用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.

2 个答案:

答案 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中实现一些逻辑......