代码之家  ›  专栏  ›  技术社区  ›  Christian Stewart

ObjectiveC从字符串解析整数

  •  113
  • Christian Stewart  · 技术社区  · 14 年前

    我试图从数组中提取一个字符串(其中包含一个整数),然后将其用作函数中的int。我想用intValue把它转换成int。

    这是我一直在尝试的代码。

      NSArray *_returnedArguments = [serverOutput componentsSeparatedByString:@":"];
      [_appDelegate loggedIn:usernameField.text:passwordField.text:(int)[[_returnedArguments objectAtIndex:2] intValue]];
    

    我得到这个错误:

    传递'loggedIn:::'的参数3将从整数生成指针 没有石膏

    发生了什么?

    5 回复  |  直到 12 年前
        1
  •  268
  •   Christian Stewart    12 年前

    [myStringContainingInt intValue];

    需要注意的是,您还可以:

    myStringContainingInt.intValue;

        2
  •  8
  •   Danyun Liu    12 年前

    积分值

    • (NSInteger)整数值 返回值 接收方文本的NSInteger值,假定为十进制表示,并跳过字符串开头的空白。如果接收器不是以数字的有效十进制文本表示形式开头,则返回0。

    有关更多信息,请参阅 here

        3
  •  1
  •   falconcreek    14 年前
    NSArray *_returnedArguments = [serverOutput componentsSeparatedByString:@":"];
    

    _returnedArguments 是一个数组 NSStrings 是哪个 UITextField text

    语法错误:

    [_appDelegate loggedIn:usernameField.text:passwordField.text:(int)[[_returnedArguments objectAtIndex:2] intValue]];
    

    passwordField 属性,则可以使用以下命令设置文本

    [[_appDelegate passwordField] setText:[_returnedArguments objectAtIndex:2]];
    
        4
  •  0
  •   Jorge Israel Peña    14 年前

    基本上,第三个参数 loggedIn 不应该是整数,应该是某种类型的对象,但是我们不能确定,因为您没有在方法调用中命名参数。提供方法签名以便我们可以确定。也许这需要一段时间 NSNumber

        5
  •  0
  •   Albert Renshaw    4 年前

    . 在这种情况下,当使用 intValue

    例如,在英国 1.23 是书面的 1,23 ,所以数字 1.777 1,777 ,作为 .intValue ,将是 1777 1 (截断)。


    我已经做了一个宏,它将根据locale参数将输入文本转换为NSNumber,locale参数可以是nil(如果nil它使用设备当前locale)。

    #define stringToNumber(__string, __nullable_locale) (\
    (^NSNumber *(void){\
    NSLocale *__locale = __nullable_locale;\
    if (!__locale) {\
    __locale = [NSLocale currentLocale];\
    }\
    NSString *__string_copy = [__string stringByReplacingOccurrencesOfString:__locale.groupingSeparator withString:@""];\
    __string_copy = [__string_copy stringByReplacingOccurrencesOfString:__locale.decimalSeparator withString:@"."];\
    return @([__string_copy doubleValue]);\
    })()\
    )
    
        6
  •  -1
  •   beefon    14 年前

    NSString int ? 尝试这种代码的平静:

    NSString *stringWithNumberInside = [_returnedArguments objectAtIndex:2];
    int number;
    sscanf([stringWithNumberInside UTF8String], "%x", &flags);