2010-08-05 42 views
0

我想从文本框条目中抓取一个数字,将其转换为字符串并获取它的长度。 (IE:在一个数字上执行一个LEN(someInteger))。Objective C - 数字字符串和抓取长度不一致

我已经能够得到它的工作,但是当数字为0或null时有一些不一致。

例如;

-(IBAction)update 
{ 
    // inputField is the number pad textbox 
    double myInput = [inputField.text doubleValue]; 

    // 
    NSNumber *c = [NSNumber numberWithDouble:myInput]; 
    NSString *myOutput = [c stringValue]; 

    NSLog(@"Starting number (number) = %@", c); 
    NSLog(@"myOutput (string) = %@", myOutput); 
    NSLog(@"myOutput (length) = %d", ([myOutput length])); 

} 

数字转换为字符串工作正常。我遇到的问题是长度,特别是当没有数字(或空)条目时。

我有具有0“文本”(占位符只是说:“在这里输入数字”)

的厦门国际银行数字键盘文本框条目当你第一次开始输入到文本框的“文本“消失,你从一个空白的文本框开始。

问题1 - 当您第一次输入的文本框有什么在文本框中,但我的NSLog说,输出长度为1个字符长。

这会导致一个问题,因为在视觉上没有什么在文本框中,但[MyOutput中长度]报告1米字符的长度。

问题2 - 当你开始输入数字,一切顺利的话 - 但是当你开始删除号码,你清除文本框中点完全是报告1个字符的长度。

如果文本框中没有任何内容,它如何读取1个字符?我认为它一定是“文本”(来自身份检查员)。

总结。

  1. 有一个数字键盘文本框输入字段。无论何时更新条目,它都会调用IBaction更新方法。

  2. 当您第一次输入数字在文本框中没有什么直观地显示在输入栏中,但报告的NSLog的长度为1个字符长。

  3. 当你开始输入数字,然后开始删除它们一次一个,直到你彻底删除报告的长度所有号码为1个字符长。

在这两种情况下,NSLog应报告0长度,但它永远不会。我试着做[myOutput length] - 1,但是这给我奇怪的结果。

对此的任何帮助将是伟大的

谢谢。

回答

3

如果没有文字,myInput将等于0.0。 myOutput将等于@"0",其长度为1.

为什么不只是使用[inputField.text length]

你可以做这样的事情:

NSNumber *number = nil; 
if ([inputField.text length] > 0) { 
    number = [NSNumber numberWithDouble:[inputField.text doubleValue]]; 
} 

你有你的电话号码,如果它存在的方式,否则numbernil

+0

哦,我会试试看看是否有效。非常感谢! – zardon 2010-08-05 07:42:53

+0

这很棒!非常感谢! – zardon 2010-08-05 07:48:52