1

申し訳ありませんが、これは簡単な質問ですが、iOS 開発と Objective-C は初めてです。

ac# のバックグラウンドから来て、テキスト ボックス内の文字列を解析し、true の場合はそれを int に割り当てて合計で使用し、それをラベルに割り当てます。

iOS と obj-c では、上記で問題が発生し、次に何を解放して割り当てる必要があるかを説明します。

助けていただければ幸いです。

4

3 に答える 3

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またはintegerValueonを使用できますNSString。このアプローチについては、次の点に注意してください。

  1. 解析が失敗した場合は 0 を返します。これにより、解析された値が実際に 0 だったのか、それとも単に解析が失敗したのかを判断できなくなります。
  2. 両方とも空白NSScannerintValue許可するため、    45正常に解析されます。NSScanner では、必要に応じてsetCharactersToBeSkippedto nilを使用して無効にすることができます。

    [scanner setCharactersToBeSkipped:nil];
    

そこから、 のような通常の算術演算を実行しinteger + 20たり、解析した他の数値を合計したりできます。

ロケールが重要な場合 ( Julien の回答を参照)、たとえば、en-US ロケールが常に使用されるようにする場合は、setLocaleNSScanner でメソッドを使用します。NSLocale

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

私が解放して割り当てる必要があるもの。

それはかなり多くのことに依存します。ARCを使用していますか?その場合は、ARC がリリースを処理します。メモリ管理について読みたいと思うかもしれません。

于 2012-08-05T16:11:29.117 に答える
2

UITextField から文字列を取得するには (*textField が UITextField であると仮定)

int integetValue=[textField.text intValue];

次に、通常の int と同じように合計できます。この値を UILabel に設定するには、次のことを行う必要があります(合計が整数の要約であると仮定します):

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

この場合、何も割り当て/解放する必要はありません。

于 2012-08-05T15:53:46.243 に答える