2012-02-22 155 views
0

嘿家伙我试图做一个基本的计算器(波兰风格),但无法弄清楚为什么我的代码停止双十进制不会工作。我在另一个线程上找到了另一种方式,但我想了解为什么我的代码无法工作。我使用的是nsRange搜索在标签中已输入的数字为小数,那么第二个条件,看是否要追加的数字是十进制,请..了解Objective-C逻辑

- (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

比较的NSString使用isEqualToString帮助,不是==

if ((range.location != NSNotFound) && [digit isEqualToString: @"."]) 
+0

DUHHHHHHHH !!!!!!!!! !!!!!!!!!!! 有时我发誓.....谢谢.. – metaDNA 2012-02-22 20:19:15

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一些逻辑...

+0

多数民众赞成多么我最终在做什么,我没有添加一个返回按钮,而是一个清晰的按钮,我的概率与清除按钮是,当我尝试设置文本标签回“”或“0”或零崩溃的程序,不能找出为什么...其这样简单的方法 - (IBAction为)clearBtn { [[自显示]的setText:无]; } 为什么会使程序崩溃? – metaDNA 2012-02-22 20:17:42

+0

自己是什么阶层? – QED 2012-02-22 20:20:20

+0

uiviewcontroller – metaDNA 2012-02-22 20:20:37