0

単一の NSString オブジェクトを割り当て、if-else ブロック内でそれにテキストを割り当てたい状況があります。次のようなコードを書くと:

NSString *string = [NSString alloc];  
if (firstCase) 
    [string initWithString:@"firstCase"];  
else if(secondCase)
    [string initWithString:@"secondCase"];  
[self someFunction:string];

内部でエラーが発生しますsomeFunction(を使用しようとすると NSInvalidArgumentException がスローされますstring)。また、コードをステップ実行するときに を入力するsomeFunctionと、コンソールに次のような行が表示されます。

alloc と init をネストするのを忘れましたか?

を参照していstringます。

NSMutableString を使用して、各 if-else ブロックの文字列に追加するだけで同じことを試しましたstring = [[NSMutableString alloc] init]が、前の方法で同じ結果が得られない理由を誰かが知っているかどうか疑問に思っていました。

4

1 に答える 1

0

if および else if の要件を満たしていないケースに遭遇する可能性はありますか?? ケースが何であるかを再確認したい場合や、文字列をデフォルトで "" にしたい場合があります。 編集: stringByAppendingString を使用して何らかの値に宣言した後、文字列に追加できます

NSString *string = [[NSString alloc] initWithString:@""];
if(case1)
   [string stringByAppendingString:@"desired string"];
elseif(case2)
   [string stringByAppendingString:@"other string"];

Apple の NSString クラス リファレンスへのリンクは次のとおりです

于 2011-08-09T21:22:50.453 に答える