2011-08-15 7 views
10

私はObjective-CにやってくるJavaの男です。 Javaでは、あなたはの線に沿って何かをしなければならないだろう文字列に変数を追加する:変数に文字列を追加する

someString = "This string is equal to " + someNumber + "."; 

でも、私はObjective-Cでそれを行う方法を見つけ出すことはできません。文字列の中央に追加したいのはNSMutableStringです。これをどうやって行うのですか?

は、私が試してみた:

NSString *someText = @"Lorem ipsum " + someMutableString; 
NSString *someText = @"Lorem ipsum " + [someMutableString stringForm]; 

といくつか他のものは、いずれも動作するようです。また、+,と交換しました。

答えて

27

あなたはappendString:を使用することができますが、一般的には、私が好む:

NSString *someText = [NSString stringWithFormat: @"Lorem ipsum %@", someMutableString]; 
NSString *someString = [NSString stringWithFormat: @"This is string is equal to %d.", someInt]; 
NSString *someOtherString = [NSString stringWithFormat: @"This is string is equal to %@.", someNSNumber]; 

か、あるいは:

NSString *someOtherString = [NSString stringWithFormat: @"This is string is equal to %d.", [someNSNumber intValue]]; 

等...

をこれらの文字列が自動解放されるので、世話をしますその価値を失うことはありません。必要に応じて、それらを保持またはコピーし、後で自分で解放してください。

9

これを試してみてください:

NSMutableString * string1 = [[NSMutableString alloc] initWithString:@"this is my string"]; 

[string1 appendString:@" with more strings attached"]; 

//release when done 
[string1 release]; 
6

は、あなたはもちろん行われたときに[string release];に忘れてはいけないstringByAppendingString

NSString* string = [[NSString alloc] initWithString:@"some string"]; 
string = [string stringByAppendingString:@" Sweet!"]; 

を使用する必要があります。

+1

メモリ管理が乱雑です。これはあなたが解放する必要がある 'alloc'によって作成されたオリジナルの文字列ですが、あなたはそれを捨てて(それを漏らして)解放してはならない' stringByAppendingString: 'の結果で置き換えています。 – Chuck

+0

私はここでメモリ管理と混同されるかもしれないが、同じメモリブロックを指している私の2番目のステートメントではないことを認識しています。既存の値と追加された文字列に値を再割り当てしますか? – Trevor

+1

いいえ、2つの異なる場所にある2つの異なるオブジェクトです。 Plain NSStringは値を変更できないので、 'stringByAppendingString:'は、元の文字列の値に付加された値を加えた新しい文字列を返します。 – Chuck

0
NSMutableString *string = [[NSMutableString alloc] init]; 

[string appendFormat:@"more text %@", object ]; 
関連する問題