Objective-C浓缩方法的差异

Objective-C浓缩方法的差异,objective-c,append,stringwithformat,Objective C,Append,Stringwithformat,澄清问题。 我最初尝试使用stringByAppendingString方法连接两个字符串: NSString *dataString = @","; NSInteger i = 0; NSString *cycleCountString = @""; for (i = 0; i<[[self cycleList] count]; i++) { cycleCountString = [NSString stringWithFormat:@"cycle#%d,",i]; [

澄清问题。 我最初尝试使用
stringByAppendingString
方法连接两个字符串:

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);
你知道为什么以前的方法不起作用吗?
stringByAppendingString
是否不像我想象的那样工作


谢谢

您永远不会更新dataString的值

dataString = [dataString stringByAppendingString: cycleCountString];

您永远不会更新dataString的值

dataString = [dataString stringByAppendingString: cycleCountString];

NSString
实例是不可变的-您不能更改它们
stringByAppendingString:
不会更改原始的
NSString
实例,它会创建一个新的
NSString
并返回该实例

新版本之所以有效,是因为您将
stringWithFormat:
的结果分配给
dataString
。您可以使用以下内容使旧版本正常工作:

dataString = [dataString stringByAppendingString:cycleCountString];

NSString
实例是不可变的-您不能更改它们
stringByAppendingString:
不会更改原始的
NSString
实例,它会创建一个新的
NSString
并返回该实例

新版本之所以有效,是因为您将
stringWithFormat:
的结果分配给
dataString
。您可以使用以下内容使旧版本正常工作:

dataString = [dataString stringByAppendingString:cycleCountString];

文档中的示例

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

生成字符串“错误:文件过早结束”。

文档中的示例

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

生成字符串“错误:文件过早结束”。

因为您没有将AGIA分配给数据字符串

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);
NSString*dataString=@“,”;
NSInteger i=0;
NSString*cycleCountString=@”;

对于(i=0;i,因为u没有将agian分配给数据字符串

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);
NSString*dataString=@“,”;
NSInteger i=0;
NSString*cycleCountString=@”;
因为(i=0;问题:)我一直想念这样的东西。没问题:)我一直想念这样的东西。