Objective C - Number to String和Grab长度不一致

时间:2010-08-05 06:29:10

标签: objective-c string numbers

我正在尝试从文本框条目中获取一个数字,将其转换为字符串并获取它的长度。 (IE:在数字上执行LEN(someInteger))。

我能够让它工作,但是当数字为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]) );

}

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

我在XIB上有一个数字键盘文本框条目,其“文本”为0(占位符只是说“在这里输入数字”)

当您第一次开始在文本框中输入内容时,“文本”消失,您将从一个空白文本框开始。

问题1 - 当您第一次进入文本框时,文本框中没有任何内容,但我的NSLog表示输出长度为1个字符。

这会导致问题,因为视觉上文本框中没有任何内容,但[myOutput length]报告1个字符长度。

问题2 - 当你开始输入数字时,一切顺利 - 但是当你开始将数字删除到完全清除文本框的位置时,它会报告1个字符的长度。

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

概要

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

  2. 当您首次在文本框中输入数字时,输入字段中没有任何可视化显示,但NSLog报告长度为1个字符。

  3. 当您开始输入数字然后开始一次删除它们,直到您完全删除所有数字时,它会将长度报告为1个字符长。

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

    对此的任何帮助都很棒

    感谢。

1 个答案:

答案 0 :(得分:3)

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

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

你可以这样做:

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

这样您就可以获得号码,否则number将是nil