0

ここで明確化の質問。私はもともと、stringByAppendingString次のメソッドを使用して2つの文字列を連結しようとしていました。

NSString *dataString = @",";
NSInteger i = 0;
NSString *cycleCountString = @"";
for (i = 0; i<[[self cycleList] count]; i++) {

    cycleCountString = [NSString stringWithFormat:@"cycle#%d,",i];
    [dataString stringByAppendingString:cycleCountString];
}
NSLog(@"DataString is: %@",dataString);

ただし、NSLogは、に追加されていない,かのように「」を出力していました。cycleCountStringdataString

読んだ後:http://stackoverflow.com/questions/510269/how-do-i-concatenate-strings-in-objective-c、代わりに:を実行することで問題を修正することができましたstringWithFromat

NSString *dataString = @",";
NSInteger i = 0;
NSString *cycleCountString = @"";
for (i = 0; i<[[self cycleList] count]; i++) {

    cycleCountString = [NSString stringWithFormat:@"cycle#%d,",i];
    dataString = [NSString stringWithFormat:@"%@%@",dataString,cycleCountString];


}
NSLog(@"DataString is: %@",dataString);

前の方法が機能しなかった理由は何ですか?stringByAppendingString私が思っているように動作しませんか?

ありがとう!

4

4 に答える 4

3

dataStringの値を更新することはありません。

dataString = [dataString stringByAppendingString: cycleCountString];
于 2011-07-01T16:59:35.787 に答える
1

NSStringインスタンスは不変です-変更することはできません。 stringByAppendingString:元のインスタンスは変更されません。NSString新しいインスタンスが作成され、それがNSString返されます。

stringWithFormat:の結果をに割り当てるため、新しいバージョンが機能しますdataString。次のようなもので古いバージョンを機能させることができます:

dataString = [dataString stringByAppendingString:cycleCountString];
于 2011-07-01T17:01:22.997 に答える
1

ドキュメントの例

NSString *errorTag = @"Error: ";
NSString *errorString = @"premature end of file.";
NSString *errorMessage = [errorTag stringByAppendingString:errorString];

文字列「エラー:ファイルの早期終了」を生成します。

于 2011-07-01T17:02:01.287 に答える
-1

uがagianをdatastringに割り当てなかったため

NSString *dataString = @",";
NSInteger i = 0;
NSString *cycleCountString = @"";
for (i = 0; i<[[self cycleList] count]; i++) {

    cycleCountString = [NSString stringWithFormat:@"cycle#%d,",i];

    dataString=[dataString stringByAppendingString:cycleCountString];//this Line
}

NSLog(@"DataString is: %@",dataString);

DataStringは次のとおりです:、cycle#0、cycle#1、cycle#2、

于 2011-07-01T17:06:39.903 に答える