从字符串解析整数

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

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

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

我得到了这个错误:

传递参数3的‘ loggedIn: : :’使指针从整数 没有石膏

怎么了?

133559 次浏览

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

NSArray *_returnedArguments = [serverOutput componentsSeparatedByString:@":"];

_returnedArgumentsNSStrings的一个数组,UITextField text属性期望这个数组。不需要转换。

语法错误:

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

如果您的 _ appDelegate 具有 passwordField属性,则可以使用以下方法设置文本

[[_appDelegate passwordField] setText:[_returnedArguments objectAtIndex:2]];

If I understood you correctly, you need to convert your NSString to int? Try this peace of code:

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

我真的不知道这个问题有什么难的,但我设法这样做:

[myStringContainingInt intValue];

应注意的是,你也可以:

myStringContainingInt.intValue;

您可以像[ str intValue ]或[ str intergerValue ]那样转换字符串

整数值 返回接收方文本的 NSInteger 值。

  • (NSInteger)整数值 返回值 接收方文本的 NSInteger 值,假设字符串的开头有一个小数并跳过空格。如果接收方没有以数字的有效十进制文本表示形式开始,则返回0。

更多信息请参考 给你

请记住,国际用户使用的小数点可能不是 .,在这种情况下,当对字符串使用 intValue时,值可能会混淆或者变成 nil。

例如,在英国,1.23写成 1,23,因此用户输入的数字 1.777将是 1,777,而 .intValue将是 1777而不是 1(截断)。


我已经制作了一个宏,它将基于一个可以为 nil 的 locale 参数将输入文本转换为 NSNumber (如果为 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]);\
})()\
)