iOS从文本框中解析和int并将其分配给要在总和中使用的整数值?

时间:2012-08-05 15:39:40

标签: objective-c ios parsing

很抱歉,我发现这是一个简单的问题,但我不熟悉iOS开发和Objective-c。

来自c#背景,我会尝试在文本框中解析字符串,然后如果为true,则将其分配给要在总和中使用的int,然后将其分配给标签。

在iOS和obj-c中我遇到上述问题,然后我需要释放和分配。

欢迎任何帮助。

3 个答案:

答案 0 :(得分:3)

您可以使用NSScanner来执行此操作。例如:

NSString *test = @"45";
NSScanner *scanner = [[NSScanner alloc] initWithString:test];
NSInteger integer;
if ([scanner scanInteger:&integer])
{
    NSLog(@"The value is: %i", integer);
}
else
{
    NSLog(@"Didn't parse successfully.");
}

如另一个答案所述,您可以在intValue上使用integerValueNSString。关于这种方法有几点需要注意:

  1. 如果解析失败,则返回0。这使得无法确定解析的值是否实际为0,或者解析是否失败。
  2. NSScannerintValue都允许空格,因此    45会成功解析。使用NSScanner,如果您希望使用setCharactersToBeSkipped nil:

    ,则可以禁用它
    [scanner setCharactersToBeSkipped:nil];
    
  3. 您可以从此处执行常规算术,例如integer + 20,或者将您已解析的其他数字相加。

    如果区域设置很重要(请参阅Julien's answer),那么您可以在NSScanner上使用setLocale方法,例如NSLocale,如果我们想确保en-US区域设置是总是使用:

    NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
    [scanner setLocale: locale];
    

      

    我需要释放和分配。

    这取决于很多事情。你在用ARC吗?如果是这样,ARC将为您处理发布。您可能希望read up进行内存管理。

答案 1 :(得分:2)

从UITextField获取字符串(假设* textField是您的UITextField)

int integetValue=[textField.text intValue];

然后你可以像普通的整数一样加总。要将此值设置为UILabel,您需要执行此操作(假设sum是整数摘要):

[label setText:[NSString stringWithFormat:@"%d",sum]];

在这种情况下,你不需要分配/释放任何东西。

答案 2 :(得分:1)

这取决于你的字符串的“国际性”。

如果您正在操作低级格式化的数字(即您完全忽略用户的语言环境),则可以使用-[NSString intValue](或类似方法)或-[NSScanner initWithString:]将字符串转换为数字。您可以使用"%d"格式说明符(和其他格式说明符)将数字转换为字符串。

但是,您可能希望尊重用户的区域设置,其中小数点分隔符可以是点或逗号,其中数字本身可以使用与通常的“阿拉伯数字”不同的字符集。

在这种情况下,您希望使用NSNumberFormatter或设置NSScanner的区域设置。

请注意,选择要用全部解释数字的区域设置取决于字符串来自(或转到)的位置。