很抱歉,我发现这是一个简单的问题,但我不熟悉iOS开发和Objective-c。
来自c#背景,我会尝试在文本框中解析字符串,然后如果为true,则将其分配给要在总和中使用的int,然后将其分配给标签。
在iOS和obj-c中我遇到上述问题,然后我需要释放和分配。
欢迎任何帮助。
答案 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
上使用integerValue
或NSString
。关于这种方法有几点需要注意:
NSScanner
和intValue
都允许空格,因此 45
会成功解析。使用NSScanner,如果您希望使用setCharactersToBeSkipped
nil:
[scanner setCharactersToBeSkipped:nil];
您可以从此处执行常规算术,例如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
的区域设置。
请注意,选择要用全部解释数字的区域设置取决于字符串来自(或转到)的位置。