Objective c 目标C-数字与字符串和抓取长度不一致

Objective c 目标C-数字与字符串和抓取长度不一致,objective-c,string,numbers,Objective C,String,Numbers,我试图从文本框条目中获取一个数字,将其转换为字符串并获取其长度。(即:对数字执行LEN(someInteger) 我已经能够让它工作,但是当数字为0或null时,会出现一些不一致 比如, -(IBAction)update { // inputField is the number pad textbox double myInput = [inputField.text doubleValue]; // NSNumber *c = [NSNumber numberW

我试图从文本框条目中获取一个数字,将其转换为字符串并获取其长度。(即:对数字执行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个字符长?我想它一定又是“文本”(来自身份检查器)

总结

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

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

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

  • 在这两种情况下,NSLog都应该报告0长度,但从来没有报告过。我试着做[myOutput length]-1,但这给了我奇怪的结果

    这方面的任何帮助都会很好


    谢谢。

    如果没有文本,
    myInput
    将等于0.0
    myOutput
    将等于长度为1的
    @“0”

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

    你可以这样做:

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

    这样你就有了你的号码,如果它存在,否则
    number
    将是
    nil
    如果没有文本,
    myInput
    将等于0.0
    myOutput
    将等于长度为1的
    @“0”

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

    你可以这样做:

    NSNumber *number = nil;
    if ([inputField.text length] > 0) {
        number = [NSNumber numberWithDouble:[inputField.text doubleValue]];
    }
    
    这样,如果您的号码存在,您就有了它,否则
    number
    将是
    nil